题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5373
一开始想到用整除11的性质去做,即奇位数的和和偶位数的和的差为11的倍数,但估不准数据范围没敢去做,
尝试去敲大数,HFZ想出了一个比较巧的方法,模拟计算的过程,用变量去存sum,sum = sum + 各位数字之和,
如果更新后的num是11的倍数,num就可以归0了,极大简化了过程,Int范围内就可以做。代码如下:
#include<stdio.h> int get_sum(int x){ ; while(x){ sum += x%; x /= ; } return sum; } int get_lgt(int x){ ; while(x >= base){ ; } return base; } int main(){ int num; int n; int sum; int lgt; ; while(scanf("%d %d",&num,&n)){ && n == -) break; if(n){ sum = ; sum = sum+get_sum(num); num %= ; lgt = get_lgt(sum); num = num*lgt+sum; } ; i < n; ++i){ //sum一直存sum,num一直存目前的数 sum = sum+get_sum(sum); num %= ; lgt = get_lgt(sum); num = num*lgt+sum; } printf("Case #%d: ",++T); )) puts("Yes"); else puts("No"); } }