Two planets named Haha and Xixi in the universe and they were created with the universe beginning.
There is 73 days in Xixi a year and 137 days in Haha a year.
Now you know the days N
Input
There are several test cases(about
5
huge test cases).
For each test, we have a line with an only integer N(0≤N) , the length of N is up to 10000000
.
Output
For the i-th test case, output Case #i: , then output "YES" or "NO" for the answer.
Sample Input
Sample Output
There is 73 days in Xixi a year and 137 days in Haha a year.
Now you know the days N
after Big Bang, you need to answer whether it is the first day in a year about the two planets.
For each test, we have a line with an only integer N(0≤N) , the length of N is up to 10000000
10001 0 333
Case #1: YES Case #2: YESCase #3: NO
--------------------------------------------------------------
思路分析:这道题看起来很简单,但是自己被里面的坑卡了好久。关键是这句:the length of N is up to 10000000 .
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; }