(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): 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.
 

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
 

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;  
}  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值