2014暑假集训个人赛1 数字整除
2014-07-12 19:38
267 查看
数字整除 |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB |
Total submit users: 88, Accepted users: 82 |
Problem 10932 : No special judgement |
Problem description |
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。 |
Input |
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=10100),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。 |
Output |
对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。 |
Sample Input |
34201209876541317171717171717171717171717171717171717171717171717180 |
Sample Output |
1010 |
Problem Source |
The Sixth Hunan Collegiate Programming Contest #include <iostream> #include <string.h> using namespace std; int main() { char mat[100]={'0'}; int map[100]={0}; int n,t=0,i,j,k; while(~scanf("%s",mat)) { n=strlen(mat); if(mat[0]=='0'&&n==1) break; for(i=0;i<n;i++) map[i]=mat[i]-'0'; for(i=n-3;i>=0;i--) { map[i+1]=map[i+1]-map[i+2]*5; while(map[i+1]<0) { map[i]--; map[i+1]=map[i+1]+10; } } k=0; for(i=0;i<2;i++) k=k*10+map[i]; if(k%17==0) printf("1\n"); else printf("0\n"); memset(map,0,sizeof(map)); memset(mat,'0',sizeof(mat)); } return 0; } |
相关文章推荐
- CCNU_2014_ACM暑假集训总结
- 2014暑假集训总结
- 2014暑假集训I期总结
- CSU-ACM2017暑假集训比赛7 - F - 凑数字 - 51Nod - 1385
- 2013暑假集训 第三场个人赛总结
- CSU-ACM2014暑假集训基础组训练赛(1) 解题报告
- 2013暑假集训 第一场个人赛总结
- 2013暑假集训 第二场个人赛总结
- 2014暑假集训组队赛01
- 暑假集训第一次个人赛总结
- 2014暑假集训搜索专题
- 2014暑假ACM13级一批集训内容
- 2017暑假七林集训day4
- 2014南邮暑期集训组队赛3 BCD题题解
- 2016年暑假集训盲打首秀赛
- 暑假跟大牛们一起集训——附多版本pku题目分类及算法分类
- 2017暑假七林集训day7——花翻
- 暑假集训要求
- 利用while语句 + if语句输出1~100能被3整除的数字
- 数字是否可以被3和5同时整除,use if and % (21.9.2017)