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
For each test, we have a line with an only integer N(0≤N), the length of N is up to 10000000.OutputFor the i-th test case, output Case #i: , then output "YES" or "NO" for the answer.Sample Input
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.
InputThere 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.OutputFor the i-th test case, output Case #i: , then output "YES" or "NO" for the answer.Sample Input
10001 0 333Sample Output
Case #1: YES Case #2: YES
Case #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;
}