计算2的N次方。N <= 10000(高精度的2^N)
作者:
lllmtx
,
2021-10-06 17:25:06
,
所有人可见
,
阅读 1236
// 计算2的N次方。N <= 10000
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 3010;//因为2的10000次方大概是3000位左右
int main()
{
int a[N] = {1};
int n;//次方数
cin>>n;
int m=1; //m:数组有m位是有值的(数组有值的位数)
for(int i=0;i<n;i++) //外层循环:乘几次2
{
int t=0;
for(int j=0;j<m;j++) //内层循环:乘一次2时,内层循环每个数组的数都要乘2,还要分别要考虑进位的问题
{
t+=a[j]*2;//这里t是相乘的值
a[j]=t%10;//t%10提供了a[j]的值
t/=10;//这里t变成了是否进位
}
if(t)
{
a[m++] = 1;//往前一位赋值为1,并且m也加1
}
}
for(int i=m-1;i>=0;i--) cout<<a[i]; //因为是倒序存储的,所以这里要倒序输出
cout<<endl;
return 0;
}
# 啊……熟悉的高精……