任意给定一个正整数 N(N ≤ 100),计算 2 的 N 次方的值。
输入格式
输入一个正整数 N。
输出格式
输出 2 的 N 次方的值。
提示
高精度计算。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
5
样例输出
32
思路:
使用两个 vector 数组 mul 和 ans 来分别存储 上一次乘以二的结果 和 下一次乘以二 的结果。首先把 1 放到mul 数组中,然后进行乘以 2 ,将得出的结果 2 存储到 ans数组中;然后我们将 mul 数组清空,再将上一次乘以 2 的结果存储到 mul 中,然后将 ans 清空来继续下一次循环,重新存储下一次乘以 2 的结果。不断的循环这一步骤直到循环 N 次,即求出 2^N 的结果。
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
vector<int> ans,mul;
cin>>n;
mul.push_back(1);
for(int i=0;i<n;i++){
int len=mul.size();
for(int j=0,t=0;j<len||t;j++){
if(j<len)
t+=mul[j]*2;
ans.push_back(t%10);
t/=10;
}
mul.clear();
int len_ans=ans.size();
for(int k=0;k<len_ans;k++)
mul.push_back(ans[k]);
ans.clear();
}
int len=mul.size();
for(int i=len-1;i>=0;i--)
cout<<mul[i];
return 0;
}
参考:https://blog.csdn.net/qq_41575507/article/details/107549771
该博客介绍如何计算2的N次方值,特别是当N较大时使用高精度计算的方法。通过使用两个vector数组mul和ans进行多次乘以2的累加,循环N次得到2^N的结果。
3266

被折叠的 条评论
为什么被折叠?



