题意: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;
}
本文深入探讨了 SkewBinary 转换算法的原理与应用,通过直接模拟的方式实现了从 SkewBinary 数到十进制数的转换,并提供了详细代码示例。
1118

被折叠的 条评论
为什么被折叠?



