http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2633
2013-08-10 16:39
435 查看
题意描述:输入N组数据,计算每一个比该数大并且每位数字之和可被十整除的最小数字,例如202 2+0+2=4,10-4=6,所以208符合题意;
1:若最后一位数字加上补齐的数字之和依然不大于9,就比如202的例子可直接输出加上6的结果208;
2:若大于9则有分为两种情况(1)从第一位一直进到最后一位就像999998,每位之和44此时结果只有一种情况符合也就是1000009,直接输出之;(2)进位没有进到最后在这里我举例说明比如80998 sum=34 只需再加6 ,然后6+8=14 每进一位这个14必须减一才可以符合题目要求,所以用一个bit 变量记录进了几位 然后减之 后面的公式就出现了用a【len-1】保存14,每进一位就减一最后对10取余就ok了,对于加100000的意思是,此题不会超过十万位,因此进位的bit变量是很大的,这个十万是为了中和其中相减所产生的负值,比如进位bit=74,然后啊a【len-1】不会超过20,这样一减就成负值了。公式:a[len-1]=(a[len-1]+100000-bit)%10;
代码:
1:若最后一位数字加上补齐的数字之和依然不大于9,就比如202的例子可直接输出加上6的结果208;
2:若大于9则有分为两种情况(1)从第一位一直进到最后一位就像999998,每位之和44此时结果只有一种情况符合也就是1000009,直接输出之;(2)进位没有进到最后在这里我举例说明比如80998 sum=34 只需再加6 ,然后6+8=14 每进一位这个14必须减一才可以符合题目要求,所以用一个bit 变量记录进了几位 然后减之 后面的公式就出现了用a【len-1】保存14,每进一位就减一最后对10取余就ok了,对于加100000的意思是,此题不会超过十万位,因此进位的bit变量是很大的,这个十万是为了中和其中相减所产生的负值,比如进位bit=74,然后啊a【len-1】不会超过20,这样一减就成负值了。公式:a[len-1]=(a[len-1]+100000-bit)%10;
代码:
#include<stdio.h> #include<string.h> int main() { int n, i,len,ans; int sum; char ch[100050]; int a[100050]; scanf("%d",&n); while(n--) { sum=0; scanf("%s",ch); len=strlen(ch); for(i=0; i<len; i++) { a[i]=ch[i]-'0'; sum+=a[i]; } ans=10-sum%10; a[len-1]+=ans; int bit=0; if(a[len-1]>9) { for(i=len-2; i>=0; i--) { bit++; a[i]++; a[i]%=10; if(a[i]) break; } if(i<0) { printf("1"); for(i=0; i<=len-2; i++) printf("0"); printf("9"); } else { a[len-1]=(a[len-1]+100000-bit)%10; for(i=0; i<len; i++) printf("%d",a[i]); } } else { for(i=0; i<len; i++) printf("%d",a[i]); } printf("\n"); } return 0; }
相关文章推荐
- KMP(http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2772)
- http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2500&cid=1122
- http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2504&cid=1122
- http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2502&cid=1122
- 站站排(重温儿时的游戏) http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1573&cid=1211
- SDUT 选夫婿1 http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1569&cid=1211
- http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2467&cid=1131
- http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1004&ojid=1&cid=6866&hide=1&problem=Pro
- 站站排(重温儿时的游戏) http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1573&cid=1211
- 站站排(重温儿时的游戏) http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1573&cid=1211
- http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=791&pid=1001&ojid=0
- http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=963&pid=1019&ojid=1
- http://acm.hdu.edu.cn/showproblem.php?pid=1754&&线段树区间求最值
- http://acm.hdu.edu.cn/showproblem.php?pid=2256&&构造矩阵求值
- Hello Kiki&&http://acm.hdu.edu.cn/showproblem.php?pid=3579
- http://acm.hdu.edu.cn/showproblem.php?pid=2191&&多重背包+二进制优化
- http://acm.hdu.edu.cn/showproblem.php?pid=1106&&排序
- http://acm.hdu.edu.cn/showproblem.php?pid=1059&&多重背包
- 欧拉回路的应用&&http://acm.hdu.edu.cn/showproblem.php?pid=3018
- HDU Today&&http://acm.hdu.edu.cn/showproblem.php?pid=2112