思路:
计算出每一个skew数的不同位数表示的权值,然后用该位与权值相乘。用int数组来装权值,用char数组来装skew数。
代码:
#include#include 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;}