这道题首先应该知道4!!!已经远远大于1e9了,而且由数论知识(唯一分解定理)可以知道:
一个大数肯定可以由素数的乘积组成,那么阶乘就可以想成:
那么一个很大的数肯定会有与Mod相等的因子,所以当n>=4的时候肯定n!!!%Mod0了;
reason:
因为24!!这个数相当大,所以因子以及足够包含1e9内所有数的因子个数和类别了;
那么 n0,1,2就可以手算,n==3就可以算3!!==720!枚举一遍就出来了,其实这道题主要是考 唯一分解定理,有了这个知识这道题就轻松解决了;
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<sstream>
#include<stack>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
#define Max 0x3f3f3f3f
//ll gcd(ll a,ll b){
// return b?gcd(b,a%b):a;
//}
//ll QM(ll x,ll n){
// ll res=1;
// while(n){
// if(n&1){
// res=(res*x)%Mod;
// }
// x=(x*x)%Mod;
// n>>=1;
// }
//}
int main(){ll n,Mod;scanf("%lld %lld",&n,&Mod);if(n>=4) return cout<<0<<endl,0;if(n==0||n==1) return cout<<1%Mod<<endl,0;if(n==2) return cout<<2%Mod<<endl,0;if(n==3) {ll ans=1;for(int i=1;i<=720;i++){ans=(ans*i)%Mod;}cout<<ans<<endl;} return 0;}
本文发布于:2024-02-02 06:11:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682551341892.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |