結果
問題 | No.109 N! mod M |
ユーザー |
|
提出日時 | 2023-10-02 16:48:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,087 bytes |
コンパイル時間 | 1,864 ms |
コンパイル使用メモリ | 194,384 KB |
最終ジャッジ日時 | 2025-02-17 04:01:40 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 WA * 2 TLE * 1 -- * 3 |
ソースコード
#include<bits/stdc++.h>#include<time.h>using namespace std;using ll = long long;#define rep(i,n) for(ll i=0;i<ll(n);i++)#define all(A) A.begin(),A.end()using vll = vector<ll>;using vvll = vector<vll>;using vvvll = vector<vvll>;using vvvvll = vector<vvvll>;using vb = vector<bool>;using vvb = vector<vb>;using vvvb = vector<vvb>;using vvvvb = vector<vvvb>;bool DEB = 0;bool isbool(ll N){if(N<=1)return 0;for(ll i=2;i*i<=N;i++){if(N%i==0)return 0;}return 1;}ll modPow(ll a,ll n,ll mod){a%=mod;if(n==0)return 1;if(n%2==1)return (modPow(a,n-1,mod)*a)%mod;ll res=modPow(a,n/2,mod);return (res*res)%mod;}void solve(){ll N,M;cin>>N>>M;if(N<=5e5){ll res=1;for(ll i=1;i<=N;i++)res=(res*i)%M;cout<<res<<endl;return;}if(!isbool(M)){cout<<0<<endl;return ;}ll res=M-1;for(ll n=M-2;n>N;n--){res*=modPow(n,M-2,M);res%=M;}cout<<res<<endl;}int main() {ll T;cin>>T;while(T--)solve();}