poj 1565 Skew Binary二进制转换

来源:互联网 发布:新概念背诵200遍 知乎 编辑:程序博客网 时间:2024/05/21 15:41

题意:Skew Binary:一种类二进制转换。最低非0位可以出现一个2,而基数为2^(k+1)-1。比如:

10120(skew) = 1 * (2^5-1) + 0 * (2^4-1) + 1 * (2^3-1) + 2 * (2^2-1) + 0 * (2^1-1)

= 31 + 0 + 7 + 6 + 0

= 44.

思路:直接模拟。

#include <stdio.h>#include <string.h>char s[100];int op[100];void init(){int i,temp=2;for(i = 0;i<31;i++){op[i] = temp-1;temp <<= 1;}}int main(){freopen("a.txt","r",stdin);init();while(scanf("%s",s) && strcmp(s,"0")){int i,len,res=0;len = strlen(s);for(i = 0;i<len;i++)res += (s[i]-'0')*op[len-i-1];printf("%d\n",res);}return 0;}


0 0
原创粉丝点击