本文共 902 字,大约阅读时间需要 3 分钟。
要将给定的skew数转换为十进制形式,可以按照以下步骤进行:
理解skew数表示方式:每一位的值乘以(2^(k+1)-1),其中k为该位的位置(从0开始)。
处理输入字符串:从左到右处理每一位,计算对应的系数。
计算每一位的贡献:遍历字符串,每一位乘以对应的系数并累加到总和中。
以下是实现代码:
#include#include #include int main() { char x[100]; while (scanf("%s", x) != EOF) { int len = strlen(x); int sum = 0; for (int i = 0; i < len; ++i) { int k = len - i - 1; // 位位置k从0开始 int power = 1 << k; // 计算2^k int value = (power - 1) * (x[i] - '0'); sum += value; } printf("%d\n", sum); } return 0;}
代码解释:
scanf读取输入字符串,直到遇到EOF。power = 1 << k计算2^k,(power - 1)得到(2^k - 1)。sum中。示例测试:
输入:101202000000000000000000000000000001010000000000000000000000000000001110011111000001110000101101102000
输出:44214748364632147483647471041110737
转载地址:http://grpe.baihongyu.com/