A water problem
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 342 Accepted Submission(s):
187
Problem Description
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 after Big Bang, you need to answer whether it is the first day in a year about the two planets.
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.
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 .
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
10001
0
333
Sample Output
Case #1: YES
Case #2: YES
Case #3: NO
Author
UESTC
Source
Recommend
解题思路:判断输入的数能否被10001整除,因为10001是73和137的最小公倍数。
只要模拟除法,看最后的余数就可以。
因为判断位数太多,所以也不能用java大数做,不然会内存超限。
感觉之前做题给做傻了,一见到大数就想用java,一看别人说的题意就理解了,但自己看就是看不懂题意。
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace std; 6 7 char s[10000005]; 8 9 int main() 10 { 11 int z=1; 12 int ans=0; 13 int d=10001; 14 int len; 15 while(scanf("%s",s)!=EOF){ 16 ans=0; 17 len=strlen(s); 18 for(int i=0;i<len;i++){ 19 ans=((ans*10+(s[i]-'0'))%d)%d; 20 } 21 if(ans==0){ 22 printf("Case #%d: YES ",z++); 23 }else{ 24 printf("Case #%d: NO ",z++); 25 } 26 } 27 return 0; 28 }