NBUT1461 数字整除(大数处理,减法、除法)
2016-04-30 18:02
501 查看
数字整除
Description
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。
例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
Input
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10^100),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。
Output
对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。
Sample Input
Sample Output
Hint
这道题被题目误导了,上来就根据题目给的方法进行计算了,过后回过头看看这道题,其实,直接就用代码中的除法部分直接计算对 17 取余就行,那些减去什么的都是没用的。
附上代码(根据题意的代码,读者可以自己根据中间的除法部分直接对 17 取余):
Description
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。
例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
Input
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10^100),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。
Output
对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。
Sample Input
34201209876541317171717171717171717171717171717171717171717171717180
Sample Output
1010
Hint
无
这道题被题目误导了,上来就根据题目给的方法进行计算了,过后回过头看看这道题,其实,直接就用代码中的除法部分直接计算对 17 取余就行,那些减去什么的都是没用的。
附上代码(根据题意的代码,读者可以自己根据中间的除法部分直接对 17 取余):
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<string> using namespace std; string str; void sovle() { int j = 0; int num1[110]; int sum = str[str.length() - 1] - '0'; for(int i = str.length() - 2;i >= 0;i--) { num1[j++] = str[i] - '0'; } while(num1[0] <= sum * 5) // 减法部分 { int t = 1; while(num1[t] == 0) { num1[t++] = 9; } num1[t] -= 1; num1[0] += 10; } num1[0] -= sum * 5; int sum1 = num1[j - 1]; // 除法部分,对 17 取余部分 j = j - 2; while(j >= 0) { sum1 = sum1 * 10 + num1[j--]; sum1 %= 17; } if(sum1 == 0) cout << 1 << endl; else cout << 0 << endl; } int main() { while(cin >> str) { if(str.length() == 1 && str[0] == '0') break; int ans = 0; for(int i = 0;i < str.length();i++) { ans = ans * 10 + (str[i] - '0'); if(ans > 1000000) { break; } } if(ans <= 1000000) { int num = ans; int sum = num % 10; num /= 10; num -= sum * 5; if(num % 17 == 0) cout << 1 << endl; else cout << 0 << endl; } else sovle(); str.clear(); } return 0; }
相关文章推荐
- nyoj_106 背包问题
- 微信公众号第三方开发之四回调url中获取授权方的授权信息以及基本信息
- NSLog的实现
- 链表实验
- LightOJ - 1433 Minimum Arc Distance (数学几何)求圆上两点间的弧长
- 当世界对你说“不”
- 阿里的味道
- Head First Java设计模式思维导图总结
- dubbo 教程
- bootstrap ch2清除浮动
- DOM(一)
- NYOJ 832 合并游戏(dp状态压缩)
- Double Shortest Paths 网络流
- 如何通过问卷调查与数据分析创建用户模型
- XMG 通讯页面的创建
- bootsraps ch1
- java之Math类的一些用法
- Linux dpke apt-get
- bootstrap开始咯
- PHP程序员进阶学习书籍参考指南