社区讨论

为什么是20分?

P1069[NOIP 2009 普及组] 细胞分裂参与者 5已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mi7po3w3
此快照首次捕获于
2025/11/21 01:34
4 个月前
此快照最后确认于
2025/11/21 01:34
4 个月前
查看原帖
CPP
#include<iostream>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
long long n,m1,m2;
long long s,minn=0x7fffffff,maxx;
long long p,cnt1,cnt2,sum;
int main()
{
    cin>>n>>m1>>m2;
    if(m1==1) 
    {
        cout<<0;
        return 0;
    }  
    for(int i=0;i<n;i++)
    {
        maxx=-1;
        cin>>s;
        p=m1;
        for(long long j=2;j<=200;j++)
        {
            if(s%j==0 && p%j!=0) 
            {
                while(s%j==0) 
                {
                    s/=j; 
                }
            }  
            else if(s%j!=0 && p%j==0) 
            {
                maxx=-1;
                break;
            } 
            else if(s%j==0 && p%j==0)
            {
                cnt1=0;
                while(s%j==0) 
                {
                	s/=j,cnt1++;  
                }
                cnt2=0;
                while(p%j==0) 
                {
                	p/=j,cnt2++;   
                }
            }
        }
        if(maxx!=-1) minn=min(minn,maxx);
    }
    if(minn==0x7fffffff) cout<<-1;
    else cout<<minn;
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...