| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 41967 | 氩_wjy | 【S】T3 | C++ | 运行超时 | 93 | 1187 MS | 27960 KB | 1566 | 2026-06-06 14:43:24 |
#include<bits/stdc++.h> #define int long long #define endl '\n' using namespace std; const int N=1e5+7; int n,a[N]; int LG[N]; int ST[18][N]; inline int gcd(int a,int b){ return ((!a)||(!b))?(a|b):gcd(b,a%b); } inline int lcm(int a,int b){ if((!a)||(!b))return 0; return a/gcd(a,b)*b; } inline void GetLG(){ LG[0]=-1; for(int i=1;i<N;i++)LG[i]=LG[i>>1]+1; } inline void GetST(){ for(int i=1;i<=n;i++)ST[0][i]=a[i]; for(int j=1;j<=LG[n];j++){ for(int i=1;i<=n-(1<<j)+1;i++){ ST[j][i]=lcm(ST[j-1][i],ST[j-1][i+(1<<j-1)]); if(ST[j][i]>1e9+7)ST[j][i]=0; } } } inline int LCM(int l,int r){ return lcm(ST[LG[r-l+1]][l],ST[LG[r-l+1]][r-(1<<LG[r-l+1])+1]); } unordered_map<int,bool> mp; inline void slv(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; GetST(); mp.clear(); for(int i=1;i<=n;i++){ int P=i,Val=a[i]; while(P<=n){ if(P!=i)Val=LCM(i,P); mp[Val]=1; if(!Val)break; int l=P,r=n; while(l<r){ int mid=l+r+1>>1; if(LCM(i,mid)==Val)l=mid; else r=mid-1; } P=l+1; } } int x=1; while(1){ if(!mp[x]){ cout<<x<<endl; return; } x++; } } signed main(){ // freopen("humor.in","r",stdin); // freopen("humor.out","w",stdout); GetLG(); int T;cin>>T; while(T--)slv(); return 0; }