zoukankan      html  css  js  c++  java
  • 九度OJ 1129:Skew数 (大数运算)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:734

    解决:548

    题目描述:

    在 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
    来源:
    2008年北京大学方正实验室计算机研究生机试真题

    思路:

    详见代码。


    代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
     
    #define MAX 35
     
    int main(void)
    {
        int n, len;
        char s[MAX];
     
        while (scanf("%s", s) != EOF)
        {
            if (s[0] == '0')
                break;
     
            len = strlen(s);
            n = 0;
            for (int i=len-1; i>=0; i--)
                n += (s[i]-48)*(pow(2, len-i)-1);
            printf("%d
    ", n);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1129
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:1004 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    [cf1097F]Alex and a TV Show
    [cf1097E]Egor and an RPG game
    2.2 物理层下面的传输媒体
    2.1 物理层的基本概念
    8 垃圾回收
    7 直接内存
    6 方法区
    1.5 计算机网络体系结构
    1.4 计算机网络的性能指标
    1.3 计算机网络的定义和分类
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083902.html
Copyright © 2011-2022 走看看