| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 41968 | 氩_wjy | 【S】T3 | C++ | 解答错误 | 33 | 876 MS | 18696 KB | 1527 | 2026-06-06 14:45:25 |
#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){ return ((!a)||(!b)?(a|b):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; (LCM(i,mid)?l=mid: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; }