码迷,mamicode.com
首页 > 其他好文 > 详细

【数论】2016中国大学生程序设计竞赛 - 网络选拔赛 A. A water problem (大整数取模)

时间:2018-04-14 23:23:13      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:技术分享   src   bsp   line   16px   一个   code   cas   ima   

链接: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 (大整数取模)

标签:技术分享   src   bsp   line   16px   一个   code   cas   ima   

原文地址:https://www.cnblogs.com/duny31030/p/8835378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!