数组:求a的b次方(a,b都是正整数)「🚩2的1000次方进阶版」
作者:
Samuely
,
2022-12-02 11:16:48
,
所有人可见
,
阅读 233
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int a[3000] = {1};
int mul_num, n; // 求mul_num的n次方
scanf("%d%d", &mul_num, &n);
int m = 1; //目前计算的结果有几位(个位1, 十位2, 百位3)
int t = 0; //进位累加器
for (int i=0; i<n; i++)
{
t = 0;
for (int j=0; j<m; j++)
{
t = a[j] * mul_num + t;
a[j] = t % 10;
t = t / 10;
}
// 注意这里, 如果mul_num>2的话比如可能出现 9 * 3 = 27 那么进位就是2, 所以不写t == 1, 写t > 0, a[m] = t;
if (t > 0) // 如果从个位最后算到了十位, 说明最后的结果是有进位的, 那么当然的结果就是
{
a[m] = t;
m++;
}
}
for (int i=m-1; i>=0; i--) printf("%d", a[i]);
printf("\n\n%d", (int) pow(mul_num, n));
return 0;
}