蓝桥杯省模拟赛 阶乘求值
问题描述
给定 n,求 n! 除以 1000000007的余数。
其中 n! 表示 n 的阶乘,值为从 1 连乘到 n 的积,即 n!=1×2×3×…×n。
输入格式
输入一行包含一个整数 n。
输出格式
输出一行,包含一个整数,表示答案。
样例输入
3
样例输出
6
样例输入
7
样例输出
5040
#include<iostream>
using namespace std;
long long sum=1;
const int N = 1000000007;
int n;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1; i<=n; ++i)
{
sum = (sum*i) % N;
//不能是sum*i%N
//因为i%N会先计算,再与 sum 相乘,而sum可能已经很大,导致溢出
}
cout<<sum % N;
return 0;
}