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