计算n的阶乘,阶乘的结果可能会很大。 输入n就是要求的n个阶乘 例如n=5,输出结果为120 #include <iostream> using namespace std; const int Max = 40000; //int 数组范围 int res[Max];//存储中间值的数组 int main() { int n; while (cin >> n && n >= 0 && n <= 10000){ memset(res, 0, sizeof(res)); //初始化申请空间,并每位置0 res[0] = 1; //0!=1 for (int i = 1; i <= n; i++) //1~N //第i次循环时,所有的数,都要乘以i //carry为进位,初始进位为0,个位没有进位 for (int j = 0, carry = 0; j<Max; j++){ res[j] = res[j] * i + carry; carry = res[j] / 10; res[j] = res[j] % 10; } int cnt; for (cnt = Max - 1; cnt >= 0; cnt--) //记录数的最高位在哪儿 if (res[cnt]!=0) break; //从后往前(高位到低位)求出不为0的一项,即结果的最高位 for (int j = cnt; j >= 0; j--) //高位到低位输出 cout << res[j]; } return 0; } |
|
来自: 雪柳花明 > 《C 笔试 算法题准备》