文章

10

粉丝

165

获赞

7

访问

25.8k

头像
题解:skew数
P1232 北京大学机考题
发布于2022年9月26日 12:37
阅读数 4.3k

解题思路
skew 数的相邻位上,基数之间没有等比关系。计算每一位的基数后,再把一个 skew 数
转换成十进制表示就很简单。对于长度为 k 的 skew 数,最后一位数字的基数为 2 k -1。由于
转换成十进制后, n 不超过 2 31 -1,因此输入 skew 数的最大长度不超过 31。(char  stew[32];)
用一个整型数组 base[31],依次存储 skew 数最末位、倒数第 2 位、…..、第 31 位的基
数值。使用这个数组,把每个 skew 数转换成对应的十进制数。
 

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    char s[100];
    int i,l,sum,t;
    while(scanf("%s",&s)!=EOF)
    {
        l=strlen(s);
        sum=0;
        for(i=0;i<l;i++)
        {
           t=(s[i]-'0')*(pow(2,l-i)-1);
           sum+=t;
        }
        printf("%d\n",sum);
    }
    return 0;
 }

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发