A water problem
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1851 Accepted Submission(s): 739
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
题意:判断一个大数能否同时被73和137整除。
分析:大数取模直接水过去,把大数拆成一位位的取模相加。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s[10000010];
int i,len,ans,kase=0;
while(~scanf("%s",s))
{
len=strlen(s),ans=0;
for(i=0;i<len;i++)
{
ans=10*ans+s[i]-'0';
ans%=10001;
}
printf("Case #%d: ",++kase);
if(ans) printf("NO\n");
else printf("YES\n");
}
return 0;
}
这题因为73和137互质,所以只要对他们乘积10001取模就可以了,正常套路是下面的代码:
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<cmath>
#include<complex>
#include<string>
#include<algorithm>
#include<iostream>
#define eps 1e-9
#define LL long long
#define bitnum(a) __builtin_popcount(a)
using namespace std;
const int N = 10000005;
const int M = 10005;
const int inf = 1000000007;
const int mod = 1000000007;
char s[N];
int main()
{
int ans1,ans2,p=1,i,k;
while(~scanf("%s",s))
{
ans1=ans2=0;
k=strlen(s);
for(i=0;i<k;i++)
{
ans1=(ans1*10+s[i]-'0')%73;
ans2=(ans2*10+s[i]-'0')%137;
}
if(!ans1&&!ans2)
printf("Case #%d: YES\n",p++);
else
printf("Case #%d: NO\n",p++);
}
return 0;
}