2的N次方的高精度运算法总结
作者:
WindSkyEnd
,
2024-10-13 17:39:51
,
所有人可见
,
阅读 2
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 3010 ; //确定位数
int main()
{
int a[N] = {1}; //定义数组
int n; //录入次数
cin >> n;
int m = 1; //定义已开放的位数,实际数组0时 m为1
for(int i = 0 ; i < n ; i++) //大循环
{
int t = 0; //辅助计算
for(int j = 0 ; j < m ; j++) //每一轮的每位的计算 小循环
{
t += a[j]*2; //+=的目的是如果前一位进位了1,那么第j位的值就是j的值*2+1,而t在上一次循环的最后为1
a[j] = t%10;
t /= 10;
}
if(t) a[m++] += 1; //一轮小循环结束后,解锁下一位数,同时m++,以备下一次进位
}
for(int i = m-1 ; i >=0 ; i--) cout << a[i] ;
//或者 int i = m;
// while(i--,i>=0) printf("%d",a[i]); 注意i--,所以上面的i需要=m
return 0;
}