在第一個樣例中,因爲 2! = 22!=2,因此 2!!! = (((2!)!)!) = ((2!)!) = (2!) = 22!!!=(((2!)!)!)=((2!)!)=(2!)=2。2模了6324仍是2!
因此答案爲2。
沒想明白會很難,想明白很水...
你想,加入它大於4的話,用計算器可得三次階乘後會直接爆掉,因此當咱們枚舉的時候就會發現,你在階乘的時候必有一次和mod相等,這樣最後無論數多大最後都得0.
而後再分類討論0,1,2,3就能夠了
CODE:
#include<cstdio> #define ll long long using namespace std; int main() { ll n,mod,ans=1; scanf("%lld%lld",&n,&mod); if(n>=4) { printf("0"); return 0; } if(n==0) { printf("%lld",1%mod); return 0; } if(n==1) { printf("%lld",1%mod); return 0; } if(n==2) { printf("%lld",2%mod); return 0; } if(n==3) { for(int i=1;i<=720;i++) ans=(ll) (ans*i)%mod; printf("%lld",ans); return 0; } }