zoukankan      html  css  js  c++  java
  • 【9112】求2的n次方的精确值

    Time Limit: 1 second
    Memory Limit: 2 MB

    问题描述
    
    求2^n的精确值。n由用户输入,0<=n<=3232。
        
     
    

    Input

    输入只有一行,一个正整数n。

    Output

    输出为计算的结果, 最后用回车结束。

    Sample Input

      8
    

    Sample Output

      256(换行)
    
    【题解】

    这是个单精度乘高精度的问题,每次在做乘方的时候,把当前算出的结果的每一位都乘上2就可以了,注意要倒序来做。然后用一个变量x来处理进位的问题。最后逆序输出就可以了。

    【代码】

    #include <cstdio>
    
    int n,a[1000],l = 1;
    
    void input_data()
    {
        scanf("%d",&n);
        for (int i = 1;i <= 999;i++) //一开始每个位置上的数都置0
            a[i] = 0;
    }
    
    void get_ans()
    {
        a[1] = 1;
        for (int i = 1;i <= n;i++) //要乘n次
            {
                int x= 0;
                for (int j = 1;j <= l;j++) //每一位的数都要乘上2 然后处理进位的问题 用一个x就能搞定
                    {
                        a[j] = (a[j]*2) + x;
                        x = a[j] / 10;
                        a[j] = a[j] % 10;
                    }
                while ( x > 0) //如果x 还大于0 就说明2^n的结果的长度还能更长。
                    {
                        a[++l] += x;
                        x = a[l] / 10;
                        a[l] = a[l] % 10;
                    }
            }
    }
    
    void output_ans()
    {
        for (int i = l;i >= 1;i--)
            printf("%d",a[i]);
    }
    
    int main()
    {
        input_data();
        get_ans();
        output_ans();
        return 0;
    }
    


     

  • 相关阅读:
    Eclipse常见配置及常用插件
    杂记
    表单双引号问题
    兼容ie的jquery ajax文件上传
    Markdown 學習
    jstl c标签
    java 在接口里函数不能重载?
    【转】Eclipse里项目名有红叉,但是展开后里面又没有红叉叉
    Android性能优化之一:ViewStub
    Merge用法
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632444.html
Copyright © 2011-2022 走看看