HDU 5832:A water problem (大数整除)

A water problem

Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 412    Accepted Submission(s): 218


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.

 

Input

There are several test cases(about 5 huge test cases).For each test, we have a line with an only integer N(0N), 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

 

题意:判断输入的数是否可以同时整除73与137,也就是能不能整除73与137的最小公倍数。
因为输入的数的长度是10000000以内,我们只能采用字符串来存储它,从ans初始化为0,最低位开始ans=(ans+s[i]-'0')%b; 计算到最后,如果ans 等于0,可以整除,否则,不可以整除。


AC代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>

using namespace std;

char s[11000000];
int ans,b=73*137;
int main()
{
    for(int i=1; gets(s); i++)
    {
        ans=0;
        int l=strlen(s);
        for(int j=0; j<l; j++)
            ans=(ans*10+(s[j]-'0'))%b;
        if(!ans)printf("Case #%d: YES\n",i);
        else printf("Case #%d: NO\n",i);
    }
    return 0;
}