XM25. 求整数的阶乘
描述
求任一正整数的阶乘(注意:是任意正整数)输入描述
输入一个正整数输出描述
输出一个正整数示例1
输入:
3
输出:
6
示例2
输入:
10
输出:
3628800
C++14 解法, 执行用时: 3ms, 内存消耗: 488KB, 提交时间: 2020-05-20
#include<iostream> #include<iomanip> #include<vector> using namespace std; int main() { int n; cin>>n; vector<long> h; h.push_back(1); int temp=0; for(int i=2;i<=n;i++) { temp=0; for(int j=0;j<h.size();j++) { h[j]=h[j]*i+temp; temp=h[j]/1000000000000000; h[j]=h[j]%1000000000000000; } if(temp) h.push_back(temp); } cout<<h.back(); for(int i=h.size()-2;i>=0;i--) { cout<<setw(15)<<setfill('0')<<h[i]; } return 0; }
C++14 解法, 执行用时: 3ms, 内存消耗: 488KB, 提交时间: 2020-04-26
#include<iostream> #include<iomanip> #include<vector> using namespace std; int main() { int n; cin>>n; vector<long> h; h.push_back(1); int temp=0; for(int i=2;i<=n;i++) { temp=0; for(int j=0;j<h.size();j++) { h[j]=h[j]*i+temp; temp=h[j]/1000000000000000; h[j]=h[j]%1000000000000000; } if(temp) h.push_back(temp); } cout<<h.back(); for(int i=h.size()-2;i>=0;i--) { cout<<setw(15)<<setfill('0')<<h[i]; } return 0; }