肯定是大叔,本来以为用加法做乘法,后来想想这样麻烦,还是可以使用乘法的,按位乘,ov可以看成不止一位,程序如下所示:
#include <stdio.h> #define MAX 40000 int main() { unsigned int res[MAX]; int n; int ov, i, j, k; int pos; while (scanf("%d", &n) != EOF) { res[0] = 1; pos = 1; for (i=1; i<=n; i++) { ov = 0; for (j=0; j<pos; j++) { k = res[j] * i + ov; res[j] = k%10; ov = k / 10; } while (ov) { res[pos++] = ov % 10; ov /= 10; } } for (i=pos-1; i>=0; i--) printf("%d", res[i]); printf(" "); } return 0; }