hdu5832-ccpc网络赛 -高精度取余

来源:互联网 发布:ptc软件 编辑:程序博客网 时间:2024/06/06 12:39
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5832

题目大意
两个行星,一个一年137天,一个一年73天,给出一个天数问是不是同时是两个行星的第一天。0表示第一天。

解题思路

因为137和73都是素数,所以最小公倍数就是10001,问题就转换为求一个高精度数对10001取余是不是等于0。

关于高精度取余。
例如123对12取余,实际上就等于((1%12*10+2)%12*10+3)%12=3,这其实就是模拟一个做除法的过程

代码
#include <cstring>#include <cstdio>using namespace std;#define MAXN 10005000int a[MAXN];int b[MAXN];int len;char str[MAXN];int main(){    int i=1;    while(scanf("%s", str)==1)    {        int tomod = 10001;        int ans = 0;        for(int j = 0; str[j]; j++)            ans = (ans * 10 + (str[j] - '0')) % tomod;        if(ans)            printf("Case #%d: NO\n", i++);        else            printf("Case #%d: YES\n", i++);    }    return 0;}

1 0
原创粉丝点击