#include
#include
#include
/*乘法函数*/
void multiply(int* a, int len, int m) {
int carry = 0;//进位
for (int i = 0; i
a[i] *= m;
a[i] += carry;
carry = a[i] / 10;
a[i] %= 10;
}
}
/*m的n次方*/
void mPowN(int m, int n) {
int bit = n*((int)log10((double)m) + 1);
int* a = (int*)malloc(bit*sizeof(int));
if (bit > 0) {
a[0] = 1;
}
int i = 1;
for (; i
a[i] = 0;
}
//做n次乘法
for (i = 0; i
multiply(a, bit, m);
}
//找到最高有效位
int s = bit - 1;
while (a[s] == 0) {
s--;
}
printf("%d^%d有%d位\n", m, n, s + 1);
//输出
printf("%d^%d=", m, n);
if (n <= 0) {
printf("1");//n<=0时默认输出1
}
for (int i = s; i >= 0; i--) {
printf("%d", a[i]);
}
printf("\n");
free(a);
}
int main() {
mPowN(28, 1);
mPowN(28, 2);
mPowN(28, 3);
mPowN(28, 28);
system("pause");
return 0;
}