0
已解决
高梓荣
新手天翼
新手天翼
题目描述
用高精度方法,求 N!的精确值(N 以一般整数输入)。
输入格式
第一行为一个整数N
输出格式
输出一个整数,即N!的精确值
输入输出样例
输入 #1复制
10
输出 #1复制
3628800
https://www.luogu.com.cn/problem/U123395
给个思路
0
已采纳
方晨顺
中级守护
中级守护
#include<iostream>
using namespace std;
int main(){
long long n,sum=1;
cin>>n;
for(int i=1;i<=n;i++)
sum*=i;
cout<<sum;
return 0;
}
如果这么写,一定只能拿个1/4分,所以要用高精度
重点代码:
for (int i = 1;i <= n;i++) //从1一直乘到n
{
int x = 0; //x用来处理进位
for (int j = 1;j <= l1;j++)
{
a[j] = a[j] *i + x;
x = a[j] / 10;
a[j] = a[j] % 10;
}
while ( x > 0) //处理数字的长度
{
l1++;
a[l1] += x;
x = a[l1] / 10;
a[l1] = a[l1] % 10;
}
}