链接:
https://www.nowcoder.net/acm/contest/78/G
来源:牛客网
来源:牛客网
在家好冷!
又多冷呢?
大概是零下e度!
为什么是零下e度呢?
不知道,因为我编不下去了。
求给定一个数n,求出最接近n!/e的整数
输入描述:
一行一个整数n 1<=n<=10^8
输出描述:
一行一个整数,即题目描述中所求,由于这个数字可能很大,我们只需要知道mod 998244353后的结果(出题人负责任地告诉你,这个数字是个质数)
就是利用了泰勒展式
#include<iostream> #include<cmath> #include<cstring> #include<algorithm> #include<cstdio> #include<string> using namespace std; typedef long long ll; const int mod=998244353; const double E=exp(1.0); int main() { ll tmp,n,res,cnt,i; scanf("%lld",&n); if(n<3) { res=1; for(i=1;i<=n;i++) res=res*i; cout<<(int)res/E<<endl; } else { if(n%2) { res=-1; cnt=1; } else { res=1; cnt=-1; } for(i=n;i>=3;i--) { cnt=cnt*i%mod; res=(res+cnt)%mod; cnt=-cnt; } res=(res+mod)%mod; printf("%lld\n",res); } }