日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nssl1174-阶乘【!基础!数论】

發(fā)布時間:2023/12/3 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nssl1174-阶乘【!基础!数论】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

比賽時xjq說這道題很水,是個基礎(chǔ)數(shù)論。
然后…
就連交都沒交


正題

給出n個數(shù),求一個最小的mmm使得
m!∏i=1nai=q(q∈N+)\frac{m!}{\prod_{i=1}^na_i}=q(q\in N_+)i=1n?ai?m!?=q(qN+?)


解題思路

我們考慮因為要求在一起的乘積,所以個體是不會單獨被處理的,所以我們可以將a1~na_{1\sim n}a1n?的乘積分解質(zhì)因數(shù),然后如果m!m!m!能夠?qū)⑺械倪@些質(zhì)因子都消掉就可以了。
然后我們考慮單獨的一個質(zhì)因子,比如:
a的乘積有2個5
我們發(fā)現(xiàn)5!5!5!只有1個5
但是10!10!10!有2個5,可以消掉,所以這個m至少要求是10。

這樣我們就可以得出算法,將a的乘積分解質(zhì)因數(shù),然后對于每個質(zhì)因子求一個最小的mmm,然后取這些要求中的最大值就好了。


code

#include<cstdio> #include<algorithm> #define N 100010 using namespace std; int n,a,p[N],m,ans; int main() {scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a);for(int j=2;j*j<=a;j++)while(!(a%j))p[j]++,a/=j,ans++;if(a>1) p[a]++,ans++;}//分解乘積for(int i=2;i<=N-10;i++)if(p[i]){int cur=i;while(p[i]){int tmp=cur;while(p[i]&&!(tmp%i)) p[i]--,tmp/=i;cur+=i;}//求最小m的要求m=max(m,cur-i);//取最大要求}printf("%d",m); }

總結(jié)

以上是生活随笔為你收集整理的nssl1174-阶乘【!基础!数论】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。