文章
10
粉丝
165
获赞
7
访问
25.8k
解题思路
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;
}
登录后发布评论
暂无评论,来抢沙发