首页 > 试题广场 >

skew数

[编程题]skew数
  • 热度指数:23583 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
在 skew binary 表示中,第 k 位的值 x[k] 表示 x[k]×(2^(k+1)-1)。每个位上的可能数字是 0 或 1,最后面一个非零位可以是 2,例如,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。前十个 skew 数是 0、1、2、10、11、12、20、100、101、以及 102。

输入描述:
输入包括多组数据,每组数据包含一个 skew 数。


输出描述:
对应每一组数据,输出相应的十进制形式。结果不超过 2^31-1。
示例1

输入

10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000

输出

44
2147483646
3
2147483647
4
7
1041110737
发表于 2024-03-12 09:05:31 回复(0)
#include <stdio.h>
#include <math.h>
#include <string.h>
int main() {
    int skew, sum, i, t, len;
    char skew_s[32];
    while(scanf("%s", skew_s) != EOF){
        len = strlen(skew_s);
        i = 1;
        sum = 0;
        for(int j = len - 1; j >= 0; j--)
            sum += (skew_s[j] - '0') * (pow(2, i++) - 1);
        printf("%d\n", sum);
    }//直接用数值不行,会变成-1
    return 0;
}

发表于 2023-03-09 21:06:40 回复(0)
#include <stdio.h>
#include <string.h>
#include <math.h>

int main() {
    char skew[100];
    int length, sum, digit;
    while (scanf("%s", skew) != EOF) {
        sum = 0;
        length = strlen(skew);
        digit = length;
        for (int i = 0; i < length; i++, digit--) {
            if (skew[i] - '0' == 1) {
                sum += (skew[i] - '0') * (pow(2, digit) - 1);
            } else if (skew[i] - '0' == 2) {
                sum += (skew[i] - '0') * (pow(2, digit) - 1);
            }
        }
        printf("%d\n", sum);
    }

    return 0;
}
发表于 2023-02-27 19:35:27 回复(0)
#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 50

int main(){
    char x[N];
    int len,i;
    int b;
    int skewX;

    while (scanf("%s", x) != EOF) {  //用字符串数组读入长数据

        len = strlen(x);
        skewX = 0;

        for(i=0;i<len;i++){
            b = x[i]-'0';           //提取每一位数字:ASCII码差值
            skewX += (pow(2,len-i)-1)*b;
        }
        printf("%d\n",skewX);
    }
    return 0;
}
发表于 2023-01-08 12:46:51 回复(0)