链接:http://acm.hdu.edu.cn/showproblem.php?pid=5832
题意:两个星球,一个星球一年只有137天,一个星球一年只有73天
输入N(爆炸后第N天),判断这是否为这两个星球的第一天
只要这个数是137与73的公倍数就好了(0比较特殊)
坑点:N的长度不超过10000000
只能用字符串来存储
大整数整除:紫书P314
大整数整除:首先把大整数写成“自左向右”的形式:1234 = (((1*10)+2)*10+3)*10+4
然后每步取模
代码
1 char n[10000010]; 2 int m; 3 scanf("%s %d",n,&m); // n 存储大整数 4 int len = strlen(n); 5 int ans = 0; 6 for(int i = 0;i < len;i++) 7 ans = (int)(((long long)ans*10+n[i]-‘0‘)%m); 8 printf("%d\n",ans);
代码:
1 #include <string> 2 #include <cstdio> 3 #include <iostream> 4 5 using namespace std; 6 7 const int m = 137*73; 8 char n[10000010]; 9 int main() 10 { 11 int ca = 1; 12 while(~scanf("%s",n)) 13 { 14 int ans = 0; 15 int len = strlen(n); 16 for(int i = 0;i < len;i++) 17 ans = (int)(((long long)ans*10+n[i]-‘0‘)%m); 18 if(ans == 0) 19 printf("Case #%d: YES\n",ca++); 20 else 21 printf("Case #%d: NO\n",ca++); 22 } 23 24 return 0; 25 }
【数论】2016中国大学生程序设计竞赛 - 网络选拔赛 A. A water problem (大整数取模)
原文:https://www.cnblogs.com/duny31030/p/8835378.html