比赛 20241129 评测结果 TTATATTTTT
题目名称 平方 最终得分 20
用户昵称 黄天乐 运行时间 16.249 s
代码语言 C++ 内存使用 3.34 MiB
提交时间 2024-11-29 11:10:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5;
const long long M=1e9+7;
int n;
long long a[MAXN],b[MAXN];
long long sum=1,x,ans=1e9+8;
int main(){
    freopen("pingfang.in","r",stdin);
    freopen("pingfang.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(long long i=1;;i++){
        if((i*i)%(a[1]*a[n])==0){
            x=i*i/(a[1]*a[n]);
            break;
        }
    }
    for(long long i=1;i<=x;i++){
        if(x%i!=0)continue;
        b[1]=i;
        b[n]=x/i;
        sum=b[1]*b[n]%M;
        bool flag=true;
        for(int j=1;j<=n-2;j++){
            for(int k=min(a[j],a[j+1]);;k++){
                if((k*k)%(a[j]*a[j+1]*b[j])==0&&k*k>=(a[j]*a[j+1]*b[j])){
                    b[j+1]=(k*k)/(a[j]*a[j+1]*b[j]);
                    sum=sum*b[j+1]%M;
                    if(sum>=ans){
                        flag=false;
                        break;
                    }
                    break;
                }
            }
            if(!flag)break;
        }
        if(!flag)continue;
        ans=min(ans,sum);
    }
    cout<<ans<<endl;
    return 0;
}