回 帖 发 新 帖 刷新版面

主题:[原创]输出2的100次方个数字,怎么办?

[em1]

回复列表 (共5个回复)

沙发

高精度乘法。

板凳

大概思想是这样的.其实就是编码而已.
用1个int数组(也可以是其他),每个int记录一定个数的数字,例如5个,
如果int a[3];
a[0]=1;a[1]=2;a[2]=3;
那么我们就约定a表示10进制数123,那这个a最大能表示的10进制数是
999999999999999,总共15个9.
现在解析下乘法
如果a[0]=0;a[1]=1;a[2]=50000;
那么a就表示150000,然后a*2.
就将a的所有元素乘以2,得a[0]=0;a[1]=2;a[2]=100000;
a[2]超过1开始约定的5位,进位得a[0]=0;a[1]=3;a[2]=0;
所以这时的a表示300000了

3 楼

不用高精度乘法,直接高精度幂

4 楼

程序在这里

5 楼


[code=c]
#include <iostream>

using namespace std;

int main()
{
    int k[1000] = {0} , p = 0 , c = 0;
    k[1] = 1;
    for (int i = 1 ; i <= 100 ; i++)
    {
        for (int j = 1 ; j <= 999 ; j++)
        {
             k[j] = k[j] * 2 + p;
             if (k[j] >= 10)
             {
                  k[j] = k[j] - 10;
                  p = 1;
             }
             else
                  p = 0;
        }
    }
    for (int i = 999 ; i >= 1 ; i--)
    {
         if (k[i] != 0)
              c = 1;
         if (c)
              cout << k[i];
    }
    cout << endl;
    system("pause");
    return 0;
}[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册