思维题+数论 烤面包片

这道题首先应该知道4!!!已经远远大于1e9了,而且由数论知识(唯一分解定理)可以知道:
一个大数肯定可以由素数的乘积组成,那么阶乘就可以想成:

思维题+数论  烤面包片

文章插图
那么一个很大的数肯定会有与Mod相等的因子,所以当n>=4的时候肯定n!!!%Mod0了;
:
思维题+数论  烤面包片

文章插图
因为24!!这个数相当大,所以因子以及足够包含1e9内所有数的因子个数和类别了;
那么 n0,1,2就可以手算,n==3就可以算3!!==720!枚举一遍就出来了,其实这道题主要是考 唯一分解定理,有了这个知识这道题就轻松解决了;
【思维题+数论烤面包片】#include#include#include#include#include#include#include#include#include#includeusing 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<