首页 > 学院 > 开发设计 > 正文

HDU 5832 A water problem

2019-11-14 08:46:25
字体:
来源:转载
供稿:网友

HDU 5832 A water PRoblem

编程能力题,大数

想当初打网预时这题。。写了半天java,都是MLE。。C++大数的板子也各种挂。。最后队友过的这题。。赛后也没去看。。现在回忆一下,补个题解,长个见识。

传送门:HDU


题意

给你一个很大的数,数字位数有10000000个。问你它是不是73和137的倍数。


思路

同时是73和137的倍数,这数必定是10001(137*73)的倍数。 一个数字一个数字的处理,再利用取模的性质,可以得到 res=(res*10+a)%mod 想不明白的话想想一个数字一个数字读入,怎么转化成一个数?就是读一个数字,把原来结果*10加上它。


代码

#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<vector>#include<cmath>#include<queue>#define _ ios_base::sync_with_stdio(0);cin.tie(0);using namespace std;const int MAXN=5005;const int oo=0x3f3f3f3f;typedef long long LL;const LL loo=4223372036854775807ll;const int MOD=73*137;char a[10000007];int main(){_ int res=0; int count=0; while(scanf("%s",a)==1) { for(int i=0;i<strlen(a);i++) { res=(res*10+(a[i]-'0'))%MOD; } cout<<"Case #"<<++count<<": "; cout<<(res==0 ? "YES" : "NO")<<endl; res=0; } //system("pause"); return 0;}
上一篇:c#之if语句

下一篇:广告印刷

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表