分析:这里N可以大到100,2的一百次方很明显超过了longlong的数据范围,所以我们可以采用数组的方式来存储数据。
与之前的高精度乘法相似,大于十就进一,但这里可以简化很多。
我们将a[0]赋值1,因为从题目中得知N最大为100,因此可以0到99一百个每次乘以2然后取余,最后输出倒过来就行。
#include<bits/stdc++.h>
using namespace std;
int a[105],b[105],c[205],pos,n,sum,l;
int main()
{
cin>>n;
a[0]=1;
for(int i=0;i<n;i++){
for(int j=0;j<=99;j++){
sum=a[j]*2+l;
a[j]=sum%10;
l=sum/10;
}
}
for(int i=100;i>=0;i--)
if(a[i]!=0)
{
pos=i;
break;
}
for(int i=pos;i>=0;i--)
cout<<a[i];
return 0;
}