简述网站开发的5个步骤,如何制作一个网页链接,邀请推广app,wordpress可以显示歌词前言
比赛时xjq说这道题很水#xff0c;是个基础数论。 然后… 就连交都没交 正题
给出n个数#xff0c;求一个最小的mmm使得 m!∏i1naiq(q∈N)\frac{m!}{\prod_{i1}^na_i}q(q\in N_)∏i1naim!q(q∈N) 解题思路
我们考虑因为要求在一起的乘积#xff0c;所以个体…前言
比赛时xjq说这道题很水是个基础数论。 然后… 就连交都没交 正题
给出n个数求一个最小的mmm使得 m!∏i1naiq(q∈N)\frac{m!}{\prod_{i1}^na_i}q(q\in N_)∏i1naim!q(q∈N) 解题思路
我们考虑因为要求在一起的乘积所以个体是不会单独被处理的所以我们可以将a1∼na_{1\sim n}a1∼n的乘积分解质因数然后如果m!m!m!能够将所有的这些质因子都消掉就可以了。 然后我们考虑单独的一个质因子比如 a的乘积有2个5 我们发现5!5!5!只有1个5 但是10!10!10!有2个5可以消掉所以这个m至少要求是10。
这样我们就可以得出算法将a的乘积分解质因数然后对于每个质因子求一个最小的mmm然后取这些要求中的最大值就好了。 code
#includecstdio
#includealgorithm
#define N 100010
using namespace std;
int n,a,p[N],m,ans;
int main()
{scanf(%d,n);for(int i1;in;i){scanf(%d,a);for(int j2;j*ja;j)while(!(a%j))p[j],a/j,ans;if(a1) p[a],ans;}//分解乘积for(int i2;iN-10;i)if(p[i]){int curi;while(p[i]){int tmpcur;while(p[i]!(tmp%i)) p[i]--,tmp/i;curi;}//求最小m的要求mmax(m,cur-i);//取最大要求}printf(%d,m);
}