【数论】2016中国大学生程序设计竞赛

链接: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
",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
",ca++);
20         else
21             printf("Case #%d: NO
",ca++);
22     }
23     
24     return 0;
25 }
文章搬运自我的个人博客http://duny31030.top 原博客为静态博客,因备份丢失无法继续更新,所以又搬运回博客园,可能部分文章阅读体验不好,可以到我的静态博客搜索相同标题查看
原文地址:https://www.cnblogs.com/duny31030/p/8835378.html