`
netalpha
  • 浏览: 81998 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

杰哥私房题──相邻数字的基数不等比:skew数

 
阅读更多

问题描述
在 skew binary 表示中, 第 k 位的值xk 表示xk(2k+1-1)。 每个位上的可能数字是0 或
1,最后面一个非零位可以是2, 例如, 10120(skew) = 1(25-1) + 0(24-1) + 1(23-1) + 2(22-1)
+ 0(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew 数是 0、1、2、10、11、12、20、100、101、
以及102。
输入数据
输入包含一行或多行,每行包含一个整数n。 如果 n = 0 表示输入结束,否则n 是一
个skew 数
输出要求
对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 231-1 =
2147483647
输入样例
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
输出样例
44
2147483646
3
2147483647
4
7
1041110737

#include <stdio.h>
#include <string.h>
int main(){
	char skew[31];
	int length, i;
	int total = 0;
	int element[31];
	element[0] = 2;
	for(i = 0; i < 30; i++)
		element[i + 1] = element[i] * 2;
	while(1){
		scanf("%s",skew);
		if(strcmp(skew,"0") == 0)
			break;
		length = strlen(skew);
		for(i = 0; i < strlen(skew); i++){
			length --;
			total += (skew[i] - '0') * (element[length] - 1);
		}
	}	
	printf("%d\n", total);
	return 0;
}
 
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics