百练 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
", sum);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/la0bei/p/3603289.html