
样例输入:
20
样例输出:
2432902008176640000
解题思路:
本题需要求N的阶乘,这其实很简单,将1到N每个数相乘即可,但此题为高精度算法题目,需要运用vector,这是本题的解题关键!
参考程序:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
vector<int> v={1};//射线数组
for(int i=2;i<=n;i++){//从2*到n
int c=0;//进位制
for(int j=0;j<v.size();j++){//当前数组的每一位*j
int p=v[j]*i+c;
v[j]=p%10;//保留个位
c=p/10;//进位值向下传递
}
while(c>0){//处理剩余的进位值
v.push_back(c%10);
c=c/10;
}}
for(int i=v.size()-1;i>=0;i--){//逆序输出
cout<<v[i];
}
return 0;
}//注意优化一下自己的程序避免超时
看到这里了,点个赞吧!谢谢!
29万+






