Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41968 氩_wjy 【S】T3 C++ 解答错误 33 876 MS 18696 KB 1527 2026-06-06 14:45:25

Tests(5/15):


#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; }


测评信息: