烤面包片(思维题+数论)

阅读: 评论:0

烤面包片(思维题+数论)

烤面包片(思维题+数论)



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

那么一个很大的数肯定会有与Mod相等的因子,所以当n>=4的时候肯定n!!!%Mod0了;
reason:

因为24!!这个数相当大,所以因子以及足够包含1e9内所有数的因子个数和类别了;
那么 n
0,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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23