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 }
功不成,身已退