百练 2973 Skew数 解题报告
思路:
计算出每一个skew数的不同位数表示的权值,然后用该位与权值相乘。用int数组来装权值,用char数组来装skew数。
代码:
#include<stdio.h> #include<string.h> int main() { int i, k, sum; int base[32]; char skew[32]; base[0] = 1; for(i = 1; i < 32; i++) base[i] = 2*base[i-1]+1;//计算每一位的基值 while(1) { scanf("%s", skew); if(strcmp(skew, "0") == 0) break; sum = 0; k = strlen(skew); for(i = 0; i < strlen(skew); i++) { k--; sum += (skew[i] - '0')*base[k]; } printf("%d\n", sum); } return 0; }
posted on 2014-03-16 13:36 stackhacks 阅读(157) 评论(0) 编辑 收藏 举报