結果
問題 | No.502 階乗を計算するだけ |
ユーザー |
|
提出日時 | 2022-06-08 16:17:17 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 58 ms / 1,000 ms |
コード長 | 2,891 bytes |
コンパイル時間 | 2,081 ms |
コンパイル使用メモリ | 198,844 KB |
最終ジャッジ日時 | 2025-01-29 19:04:09 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 52 |
ソースコード
#include <bits/stdc++.h>//#include <atcoder/all>//using namespace atcoder;using namespace std;using ll = long long;using vll = vector<ll>;using vvll = vector<vll>;using vvvll = vector<vvll>;using vb = vector<bool>;using vvb = vector<vb>;using vvvb = vector<vvb>;#define all(A) A.begin(),A.end()#define rep(i, n) for (ll i = 0; i < (ll) (n); i++)using pqr = priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>>;template<class T>bool chmax(T& p, T q) {if (p < q) {p = q;return 1;}else {return 0;}}template<class T>bool chmin(T& p, T q) {if (p > q) {p = q;return 1;}else {return 0;}}ll gcd(ll(a), ll(b)) {ll c = a;while (a % b != 0) {c = a % b;a = b;b = c;}return b;}ll Eugrid(ll A, ll B, ll& x, ll& y) {if (B == 0) {x = 1;y = 0;return A;}ll C = gcd(A, B);ll D = Eugrid(B, A % B, y, x);y -= A / B * x;return D;}//Ax+By=gcd(A,B)の解ll N;vector<pair<ll,ll>> P;vector<vector<ll>> DP;bool dfs(ll L,ll R,ll turn){if(L>=R){return 0;}if(DP[L][R]!=-1){return DP[L][R];}bool W=0;bool D=1;rep(i,N){if(L<=P[i].first&&P[i].second<=R){ll x=dfs(L,P[i].first-1,0);ll y=dfs(P[i].second+1,R,0);if((x^y)){W=1;}}}DP[L][R]=W;return W;}int main() {cin.tie(nullptr);ios::sync_with_stdio(false);ll mod=1e9+7;ll N;cin>>N;if(N>=mod){cout<<0<<endl;return 0;}else{vll PD={1,682498929,491101308,76479948,723816384,67347853,27368307,625544428,199888908,888050723,927880474,281863274,661224977,623534362,970055531,261384175,195888993,66404266,547665832,109838563,933245637,724691727,368925948,268838846,136026497,112390913,135498044,217544623,419363534,500780548,668123525,128487469,30977140,522049725,309058615,386027524,189239124,148528617,940567523,917084264,429277690,996164327,358655417,568392357,780072518,462639908,275105629,909210595,99199382,703397904,733333339,97830135,608823837,256141983,141827977,696628828,637939935,811575797,848924691,131772368,724464507,272814771,326159309,456152084,903466878,92255682,769795511,373745190,606241871,825871994,957939114,435887178,852304035,663307737,375297772,217598709,624148346,671734977,624500515,748510389,203191898,423951674,629786193,672850561,814362881,823845496,116667533,256473217,627655552,245795606,586445753,172114298,193781724,778983779,83868974,315103615,965785236,492741665,377329025,847549272,698611116,0};;ll an=PD[N/ll(1e7)];for(ll i=N/ll(1e7)*ll(1e7)+1;i<=N;i++){an*=i;an%=mod;}cout<<an<<endl;}}