我对大数运算还很陌生啊。一步一步来,有错的地方还请大家指教。
先做这个: 输入一个个位数,求他的n次方。比如 2的 31次方是2147483648。
上代码:
发现写的这个程序能做两位数之内的,到三位数就不行了
[ 本帖最后由 有容就大 于 2012-1-17 20:01 编辑 ]
先做这个: 输入一个个位数,求他的n次方。比如 2的 31次方是2147483648。
上代码:
程序代码:
#include <stdio.h> #include <math.h> int main(void) { int n, m, s = 1, i = 0; int k = 1, j; int a[100] = { 0 }, b[100] = { 0 }; printf("\nplease input n(1 - 9):"); scanf("%d", &n); printf("\nplease input m:"); scanf("%d", &m); printf("\n"); a[0] = 1; while (i < m) { for (j = 0; j <= k ; j ++) { s = a[j] * n; if ((s + b[j]) < 10) a[j] = s + b[j]; else { a[j] = (s + b[j]) % 10; b[j + 1] = (s + b[j]) / 10; } } if (a[--j]) k++; for (j = 0; j <= k; j++) b[j] = 0; i++; } for (j = k - 1; j >= 0; j--) printf("%d", a[j]); printf("\n\n"); return 0; }
发现写的这个程序能做两位数之内的,到三位数就不行了
[ 本帖最后由 有容就大 于 2012-1-17 20:01 编辑 ]
梅尚程荀
马谭杨奚