poj百练2973:Skew数 进制问题

 1 /* 功能Function Description:
 2    开发环境Environment:          DEV C++ 4.9.9.1
 3    技术特点Technique:
 4    版本Version:
 5    作者Author:                    可笑痴狂
 6    日期Date:                      20120730
 7    备注Notes:
 8    SubmitStatisticsClarifyTime Limit: 1000msMemory Limit: 65536kB
 9     Description
10         在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2,
11         例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1) + 0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 
12         前十个skew数是 0、1、2、10、11、12、20、100、101、以及102。
13     Input
14         输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n是一个skew 数
15     Output
16         对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 231-1 = 2147483647
17     Sample Input
18         10120
19         200000000000000000000000000000
20         10
21         1000000000000000000000000000000
22         11
23         100
24         11111000001110000101101102000
25         0
26     Sample Output
27         44
28         2147483646
29         3
30         2147483647
31         4
32         7
33         1041110737
34 */
35 
36 #include<stdio.h>
37 #include<string.h>
38 int main()
39 {
40     char s[40];
41     int i,sum,len;
42     while(scanf("%s",s))
43     {
44         if(strcmp(s,"0")==0)
45             break;
46         sum=0;
47         len=strlen(s);
48         for(i=0;i<len;++i)
49             sum+=(s[i]-'0')*((1<<len-i)-1);
50         printf("%d\n",sum);
51     }
52     return 0;
53 }

题目连接:http://poj.grids.cn/practice/2973 

功不成,身已退
原文地址:https://www.cnblogs.com/dongsheng/p/2615430.html