100010333Sample OutputCase #1: YESCase #2: YESCase #3: NO
--------------------------------------------------------------
思路分析:这道题看起来很简单,但是自己被里面的坑卡了好久。关键是这句:the length of
N is up to10000000 .N的值是很大的,即使longlong类型也存不下,所以就要自己写一个字符数组的除法。
#include <iostream>#include<stdio.h>#include<string>/* run this PRogram using the console pauser or add your own getch, system("pause") or input loop */using namespace std;bool div(string a,int b)//判断是否能被除数整除{ int sum=a[0]-'0'; int size=a.size(); int k=0; int yu=0; while(k<size) { //如果sum大于b,sum=sum%b*10+a[k+1]-'0' ; //如果sum小于b,sum=sum+10+ a[k+1]-'0'; if(sum<b) { yu=sum%b; if(k+1<size) sum=sum*10+a[k+1]-'0'; else break; } else { yu=sum%b; if(k+1<size) sum=sum%b*10+a[k+1]-'0'; else break; } k++; } if(yu==0) return true; else return false;}int main(int argc, char** argv) { string day; int i=1; while(cin>>day) { if(div(day,73)&&div(day,137)) { printf("Case #%d: YES/n",i); i++; } else{ printf("Case #%d: NO/n",i); i++; } } return 0;}
新闻热点
疑难解答