#include<stdio.h>
#include<string.h>
void reverseOrder(char* str, int p, int q)
{
char temp;
while(p < q)
{
temp = str[p];
str[p] = str[q];
str[q] = temp;
p++;
q--;
}
}
char* multiLargeNum(char* A, char* B)
{
int m = strlen(A);
int n = strlen(B);
char* result = new char[m+n+1];
memset(result, '0', m+n);
result[m+n] = '\0';
reverseOrder(A, 0, m-1);
reverseOrder(B, 0, n-1);
int multiFlag; // 乘积进位
int addFlag; // 加法进位
for(int i=0; i <= n-1; i++) // B的每一位
{
multiFlag = 0;
addFlag = 0;
for(int j=0; j <= m-1; j++) // A的每一位
{
// '0' - 48 = 0
int temp1 = (A[j] - 48) * (B[i] - 48) + multiFlag;
multiFlag = temp1 / 10;
temp1 = temp1 % 10;
int temp2 = (result[i+j] - 48) + temp1 + addFlag;
addFlag = temp2 / 10;
result[i+j] = temp2 % 10 + 48;
}
result[i + m] += multiFlag + addFlag;
}
reverseOrder(result, 0, m+n-1); // 逆序回来
return result;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
char* res="1";
char b[10]="2";
for(int i=1;i<=n;i++)
res=multiLargeNum(res,b);
int p=0;
for(int i=1;;i++)
{
if(res[i]=='0')
p=i;
else
break;
}
printf("%s\n",res+p+1);
}
return 0;
}
N的M次方大数模板
最新推荐文章于 2021-02-13 09:25:30 发布