大数阶乘!!

直接上代码:

#include <iostream> using namespace std; int main() { int result[40000]; //保存结算结果的数组 int height = 1; //结果的最高位 int num; //计算阶乘的数字 cout<<"Input num:"; cin>>num; //控制台输入数字 if (num > 10000 || num < 0) { cout<<"Wrong num!"; return -1; } result[0] = 1; for (int i=1;i<=num;i++) { int res = 0; //进位 每次循环重新赋值为0; for (int j=0;j<height;j++) { int buf = result[j] * i + res; //计算乘得的结果,再加上进位位。 result[j] = buf % 10; //取当前位 res = buf / 10; //计算进位 } while (res) { result[height++] = res % 10; //取当前位 res /= 10; //计算进位 } } cout<<num<<"的阶乘是:"<<endl; for (int k=height-1;k>=0;k--) { cout<<result[k]; } //输出结果 cout<<endl; cout<<"length"<<height<<endl; system("pause"); return 0; }

你可能感兴趣的:(System,input,iostream)