代码:
由乃:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define lson x<<1 #define rson x<<1|1 using namespace std; typedef long long ll; const int N=100050; int n,m,v,f[1050][20],tr[N*4],lazy[N*4],a[N],tot,b[N],flg,sum[N]; bool cmp(int a,int b){return a>b;} void update(int x,int l,int r,int xl,int xr){ if(xl<=l&&r<=xr) {tr[x]++;lazy[x]++;return;} int mid=(l+r)>>1; if(xr<=mid) update(lson,l,mid,xl,xr); else if(xl>mid) update(rson,mid+1,r,xl,xr); else update(lson,l,mid,xl,mid),update(rson,mid+1,r,mid+1,xr); } int query(int x,int l,int r,int id,int la){ if(l==r) return tr[x]+la; int mid=(l+r)>>1;la+=lazy[x]; if(id<=mid) return query(lson,l,mid,id,la); else return query(rson,mid+1,r,id,la); } int work(int i){ int ret=query(1,1,n,i,0);int x=a[i]; for(int j=18;j>=0;j--){ if(ret>=(1<<j)) ret-=(1<<j),x=f[x][j]; } return x; } void dfs(int x,int suma,int sumb,int sa,int sb){ if(abs(suma-sumb)>sum[x]+(tot-x+1)) return; if(flg) return; if(suma==sumb&&sa&&sb) {flg=1;return;} if(x>tot) return; dfs(x+1,suma+b[x]+1,sumb,sa+1,sb); dfs(x+1,suma,sumb+b[x]+1,sa,sb+1); dfs(x+1,suma,sumb,sa,sb); } int main(){ scanf("%d%d%d",&n,&m,&v); for(int i=0;i<=v;i++) f[i][0]=(1ll*i*i*i)%v; for(int j=1;j<=18;j++){ for(int i=0;i<=v;i++){ f[i][j]=f[f[i][j-1]][j-1]; } } for(int i=1;i<=n;i++) scanf("%d",&a[i]);int tmp=0; for(int i=1;i<=m;i++){ int type,l,r;scanf("%d%d%d",&type,&l,&r); if(type==2) update(1,1,n,l,r); else { tmp++; if(r-l+1>13) puts("Yuno"); else{ tot=0; for(int j=l;j<=r;j++) b[++tot]=work(j); sort(b+1,b+1+tot,cmp);sum[tot]=b[tot];sum[tot+1]=0; for(int j=tot-1;j;j--) sum[j]=sum[j+1]+b[j]; flg=0;dfs(1,0,0,0,0); if(flg) puts("Yuno"); else puts("Yuki"); } } } return 0; }
树:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<map> using namespace std; typedef long long ll; const int N=300050; int head[N],to[N],nxt[N],v[N],cnt,n,s; ll dep[N],ans; void lnk(int x,int y){ to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt; to[++cnt]=x,nxt[cnt]=head[y],head[y]=cnt; } map<ll,int>Map; void dfs(int x,int fa){ Map[dep[fa]+s]++;ans+=Map[dep[x]]; for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==fa) continue; dep[y]=dep[x]+v[y];dfs(y,x); } Map[dep[fa]+s]--; } int main(){ scanf("%d%d",&n,&s); for(int i=1;i<=n;i++) scanf("%d",&v[i]); for(int i=1;i<n;i++) {int x,y;scanf("%d%d",&x,&y);lnk(x,y);} dep[1]=v[1];dfs(1,0); printf("%lld ",ans); return 0; }
simple:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int N=500050; int head[N],to[N],nxt[N],hsh[N],tot,rt[N],cnt,sz,a[N],n,Q; void lnk(int x,int y){ to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt; to[++cnt]=x,nxt[cnt]=head[y],head[y]=cnt; } int size[N],son[N],dfn[N],id[N],tt,top[N],fa[N],deep[N]; int sum[N*8],ls[N*8],rs[N*8]; char s[N]; struct data{ int type,i,j,x; }q[N]; void dfs1(int x,int f){ size[x]=1; for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==f) continue; fa[y]=x;deep[y]=deep[x]+1;dfs1(y,x);size[x]+=size[y]; if(size[y]>size[son[x]]) son[x]=y; } } void dfs2(int x,int f){ dfn[x]=++tt;top[x]=f;id[tt]=x; if(son[x]) dfs2(son[x],f); for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==fa[x]||y==son[x]) continue; dfs2(y,y); } } void update(int &x,int l,int r,int id,int v){ if(!x) x=++sz; if(l==r) {sum[x]+=v;return;} int mid=(l+r)>>1; if(id<=mid) update(ls[x],l,mid,id,v); else update(rs[x],mid+1,r,id,v); sum[x]=sum[ls[x]]+sum[rs[x]]; } int query(int x,int l,int r,int xl,int xr){ if(xl<=l&&r<=xr) return sum[x]; int mid=(l+r)>>1; if(xr<=mid) return query(ls[x],l,mid,xl,xr); else if(xl>mid) return query(rs[x],mid+1,r,xl,xr); else return query(ls[x],l,mid,xl,mid)+query(rs[x],mid+1,r,mid+1,xr); } void Change(int x,int c){ update(rt[a[x]],1,n,dfn[x],-1); update(rt[c],1,n,dfn[x],1); a[x]=c; } int Query(int x,int y,int c){ int ret=0; while(top[x]!=top[y]){ if(deep[top[x]]<deep[top[y]]) swap(x,y); ret+=query(rt[c],1,n,dfn[top[x]],dfn[x]); x=fa[top[x]]; } if(deep[x]<deep[y]) swap(x,y); ret+=query(rt[c],1,n,dfn[y],dfn[x]); return ret; } int main(){ scanf("%d%d",&n,&Q); for(int i=1;i<=n;i++) scanf("%d",&a[i]),hsh[++tot]=a[i]; for(int i=1;i<n;i++){ int x,y;scanf("%d%d",&x,&y);lnk(x,y); } dfs1(1,0);dfs2(1,1); for(int i=1;i<=Q;i++){ scanf("%s",s+1); if(s[1]=='Q') scanf("%d%d%d",&q[i].i,&q[i].j,&q[i].x),q[i].type=1,hsh[++tot]=q[i].x; else scanf("%d%d",&q[i].i,&q[i].x),q[i].type=2,hsh[++tot]=q[i].x; } sort(hsh+1,hsh+1+tot);tot=unique(hsh+1,hsh+1+tot)-hsh-1; for(int i=1;i<=n;i++) a[i]=lower_bound(hsh+1,hsh+1+tot,a[i])-hsh,update(rt[a[i]],1,n,dfn[i],1); for(int i=1;i<=Q;i++){ q[i].x=lower_bound(hsh+1,hsh+1+tot,q[i].x)-hsh; if(q[i].type==1) printf("%d ",Query(q[i].i,q[i].j,q[i].x)); else Change(q[i].i,q[i].x); } return 0; }
oi树:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int N=10050; int f[N][27][33],g[N][27][33]; int n,k,son[N][27],v[N][27],mod; char s[N*20]; int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++){ for(int j=1;j<=k;j++){ scanf("%d%d",&son[i][j-1],&v[i][j-1]); f[i][j-1][0]=son[i][j-1],g[i][j-1][0]=v[i][j-1]; } } scanf("%s",s+1);scanf("%d",&mod); for(int j=1;j<=31;j++){ for(int K=0;K<k;K++){ for(int i=1;i<=n;i++){ f[i][K][j]=f[f[i][K][j-1]][K][j-1]; g[i][K][j]=(g[i][K][j-1]+g[f[i][K][j-1]][K][j-1])%mod; } } } int len=strlen(s+1),ans=0,x=1,i=1; for(int i=1;i<=len;i++){ if(s[i]=='['){ int p=0; while(s[++i]>='0'&&s[i]<='9') p=p*10+s[i]-48; int K=s[i]-'A'; i++; for(int j=31;j>=0;j--){ if(p>=(1ll<<j)&&f[x][K][j]){ (ans+=g[x][K][j])%=mod; p-=(1<<j);x=f[x][K][j]; } } } else{ int K=s[i]-'A'; (ans+=g[x][K][0])%=mod;x=f[x][K][0]; } } cout<<ans%mod<<endl; return 0; }
二分图:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define lson x<<1 #define rson x<<1|1 using namespace std; typedef long long ll; const int N=1000050; struct data{ int u,v; }; vector<data> p[N]; int dep[N],sz[N],fa[N],a[N],top,n,m,T; struct date{ int x,y,a,sz; }zhan[N]; void query(int x,int l,int r,int xl,int xr,int u,int v){ if(xl<=l&&r<=xr) {p[x].push_back((data){u,v});return;} int mid=(l+r)>>1; if(xr<=mid) query(lson,l,mid,xl,xr,u,v); else if(xl>mid) query(rson,mid+1,r,xl,xr,u,v); else query(lson,l,mid,xl,mid,u,v),query(rson,mid+1,r,mid+1,xr,u,v); } int find(int x){ if(x==fa[x]) return fa[x];int y=find(fa[x]); dep[x]=dep[fa[x]]^a[x];return y; } int merge(int x,int y){ int u=find(x),v=find(y); if(u==v) return dep[x]^dep[y]^1; if(sz[u]>sz[v]) swap(u,v); zhan[++top]=(date){u,v,a[u],sz[v]}; fa[u]=v;sz[v]+=sz[u];a[u]=dep[x]^dep[y]^1; return 0; } void del(int now){ while(top>now){ fa[zhan[top].x]=zhan[top].x;dep[zhan[top].x]=0; a[zhan[top].x]=zhan[top].a;sz[zhan[top].y]=zhan[top].sz; top--; } } void solve(int x,int l,int r){ int mid=(l+r)>>1;int now=top; for(int i=0;i<p[x].size();i++){ int ret=merge(p[x][i].u,p[x][i].v); if(ret){for(int i=l;i<=r;i++)puts("No");del(now);return;} } if(l==r){puts("Yes");del(now);return;} solve(lson,l,mid);solve(rson,mid+1,r);del(now); } int main(){ freopen("grape.in","r",stdin); freopen("grape.out","w",stdout); scanf("%d%d%d",&n,&m,&T); for(int i=1;i<=m;i++){ int u,v,l,r;scanf("%d%d%d%d",&u,&v,&l,&r);l++; if(l>r) continue; query(1,1,T,l,r,u,v); } for(int i=1;i<=n;i++) fa[i]=i,sz[i]=1; solve(1,1,T); return 0; }
情报传递:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define lson x<<1 #define rson x<<1|1 using namespace std; typedef long long ll; const int N=1000050; int head[N],to[N],nxt[N],cnt,n,rt,T; void lnk(int x,int y){ to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt; to[++cnt]=x,nxt[cnt]=head[y],head[y]=cnt; } struct data{ int type,x,y,tim,id; }q[N]; bool cmp(const data &a,const data &b){ if(a.tim==b.tim) return a.type<b.type; else return a.tim<b.tim; } int deep[N],size[N],son[N],dfn[N],tt,id[N],top[N],fa[N]; void dfs1(int x,int f){ size[x]=1; for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==f) continue; deep[y]=deep[x]+1;dfs1(y,x);size[x]+=size[y]; if(size[y]>size[son[x]]) son[x]=y; } } void dfs2(int x,int f){ top[x]=f;dfn[x]=++tt;id[tt]=x; if(son[x]) dfs2(son[x],f); for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==fa[x]||y==son[x]) continue; dfs2(y,y); } } int tr[N*4]; /*void update(int x,int l,int r,int id){ if(l==r) {tr[x]=1;return;} int mid=(l+r)>>1; if(id<=mid) update(lson,l,mid,id); else update(rson,mid+1,r,id); tr[x]=tr[lson]+tr[rson]; } int query(int x,int l,int r,int xl,int xr){ if(xl<=l&&r<=xr) return tr[x]; int mid=(l+r)>>1; if(xr<=mid) return query(lson,l,mid,xl,xr); else if(xl>mid) return query(rson,mid+1,r,xl,xr); else return query(lson,l,mid,xl,mid)+query(rson,mid+1,r,mid+1,xr); }*/ int lowbit(int x){return x&-x;} void update(int x,int v){ for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=v; } int query(int x){ int ret=0; for(int i=x;i;i-=lowbit(i)) ret+=tr[i]; return ret; } struct date{ int x,y; }ans[N]; date Lca(int x,int y){ int ret1=deep[x]+deep[y],ret2=0; while(top[x]!=top[y]){ if(deep[top[x]]<deep[top[y]]) swap(x,y); //ret2+=query(1,1,n,dfn[top[x]],dfn[x]); ret2+=query(dfn[x])-query(dfn[top[x]]-1); x=fa[top[x]]; } if(deep[x]<deep[y]) swap(x,y); //ret2+=query(1,1,n,dfn[y],dfn[x]); ret2+=query(dfn[x])-query(dfn[y]-1); return (date){ret1-2*deep[y]+1,ret2}; } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ int x;scanf("%d",&x); if(!x) rt=i; else lnk(i,x),fa[i]=x; } dfs1(rt,0);dfs2(rt,rt);scanf("%d",&T);int xh=0; for(int i=1;i<=T;i++){ int type;scanf("%d",&type); if(type==1){ int x,y,z; scanf("%d%d%d",&x,&y,&z);++xh; q[i]=(data){1,x,y,i-z,xh}; } else{ int x;scanf("%d",&x); q[i]=(data){2,x,0,i,0}; } } sort(q+1,q+1+T,cmp); for(int i=1;i<=T;i++){ if(q[i].type==2) update(dfn[q[i].x],1);//update(1,1,n,dfn[q[i].x]); else ans[q[i].id]=Lca(q[i].x,q[i].y); } for(int i=1;i<=xh;i++) printf("%d %d ",ans[i].x,ans[i].y); return 0; }
消耗战:
// MADE BY QT666 #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #include<cstring> #include<vector> using namespace std; typedef long long ll; const int N=1000050; int head[N],to[N],nxt[N],w[N],cnt,tt; int h[N],t[N],nx[N],tmp,n,m,bj[N]; ll dp[N],val[N]; void lnk(int x,int y,int z){ to[++cnt]=y,nxt[cnt]=head[x],w[cnt]=z,head[x]=cnt; to[++cnt]=x,nxt[cnt]=head[y],w[cnt]=z,head[y]=cnt; } void insert(int x,int y){ if(x==y) return; t[++tmp]=y,nx[tmp]=h[x],h[x]=tmp; t[++tmp]=x,nx[tmp]=h[y],h[y]=tmp; } int size[N],dfn[N],id[N],son[N],top[N],deep[N],fa[N],a[N],zhan[N]; void dfs1(int x,int f){ size[x]=1; for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==f) continue; val[y]=min(val[x],1ll*w[i]); deep[y]=deep[x]+1;dfs1(y,x);fa[y]=x;size[y]+=size[x]; if(size[y]>size[son[x]]) son[x]=y; } } void dfs2(int x,int f){ dfn[x]=++tt;top[x]=f;id[tt]=x; if(son[x]) dfs2(son[x],f); for(int i=head[x];i;i=nxt[i]){ int y=to[i];if(y==fa[x]||y==son[x]) continue; dfs2(y,y); } } int Lca(int x,int y){ while(top[x]!=top[y]){ if(deep[top[x]]<deep[top[y]]) swap(x,y); x=fa[top[x]]; } if(deep[x]<deep[y]) swap(x,y); return y; } bool cmp(int a,int b){return dfn[a]<dfn[b];} void Dp(int x,int f){ ll res=0;dp[x]=val[x]; for(int i=h[x];i;i=nx[i]){ int y=t[i];if(y==f) continue; Dp(y,x);res+=dp[y]; } h[x]=0; if(!res) dp[x]=val[x]; else if(!bj[x]&&res<dp[x]) dp[x]=res; } void solve(){ int k;scanf("%d",&k);tmp=0; for(int i=1;i<=k;i++){scanf("%d",&a[i]);bj[a[i]]=1;} sort(a+1,a+1+k,cmp);int tp=0;zhan[++tp]=1; for(int i=1;i<=k;i++){ if(!tp){zhan[++tp]=a[i];continue;} int p=Lca(zhan[tp],a[i]); while(1){ if(deep[zhan[tp-1]]<=deep[p]){ insert(zhan[tp],p);tp--; if(zhan[tp]!=p) zhan[++tp]=p; break; } insert(zhan[tp],zhan[tp-1]);tp--; } zhan[++tp]=a[i]; } while(tp>1) insert(zhan[tp],zhan[tp-1]),tp--; Dp(1,1);printf("%lld ",dp[1]); for(int i=1;i<=k;i++) bj[a[i]]=0; } int main(){ val[1]=1ll<<60;scanf("%d",&n); for(int i=1;i<n;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);lnk(x,y,z);} dfs1(1,0);dfs2(1,1);scanf("%d",&m); while(m--) solve(); return 0; }
Peaks:
// MADE BY QT666 #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #include<cstring> #define RG register using namespace std; typedef long long ll; const int N=400050; int n,m,Q,sz,fa[N],rt[N],ls[N*20],rs[N*20],sum[N*20],hsh[N],Fa[N]; int id[N],dfn[N],ed[N],h[N],v[N],size[N],son[N],top[N]; struct data{ int a,b,c; }e[500050]; bool cmp(const data &a,const data &b){return a.c<b.c;} int head[N],to[N],nxt[N],cnt,tt,tot,res; inline void lnk(int x,int y){ to[++cnt]=y,nxt[cnt]=head[x],head[x]=cnt; } inline int find(int x){ if(x!=fa[x]) fa[x]=find(fa[x]); return fa[x]; } inline void dfs1(int x,int f){ size[x]=1; for(RG int i=head[x];i;i=nxt[i]){ int y=to[i]; if(y!=f){ Fa[y]=x;dfs1(y,x);size[x]+=size[y]; if(size[y]>size[son[x]]) son[x]=y; } } } inline void dfs2(int x,int ff){ dfn[x]=++tot;id[tot]=x;top[x]=ff; if(son[x]) dfs2(son[x],ff); for(RG int i=head[x];i;i=nxt[i]){ int y=to[i]; if(y!=Fa[x]&&y!=son[x]) dfs2(y,y); } ed[x]=tot; } inline void insert(RG int x,RG int &y,RG int l,RG int r,RG int u){ y=++sz;ls[y]=ls[x],rs[y]=rs[x];sum[y]=sum[x]+1; if(l==r) return; RG int mid=(l+r)>>1; if(u<=mid) insert(ls[x],ls[y],l,mid,u); else insert(rs[x],rs[y],mid+1,r,u); } inline int query(RG int x,RG int y,RG int l,RG int r,RG int k){ if(l==r) return l; RG int mid=(l+r)>>1; if(sum[ls[y]]-sum[ls[x]]>=k) return query(ls[x],ls[y],l,mid,k); else return query(rs[x],rs[y],mid+1,r,k-(sum[ls[y]]-sum[ls[x]])); } inline int jump(RG int x,RG int lim){ RG int j=x; while(x&&v[top[x]]<=lim){ j=top[x],x=Fa[top[x]]; } if(v[x]>lim||v[top[x]]<=lim) return j; RG int l=dfn[top[x]],r=dfn[x],ret=0; while(l<=r){ RG int mid=(l+r)>>1; if(v[id[mid]]<=lim) r=mid-1,ret=mid; else l=mid+1; } return id[ret]; } int main(){ scanf("%d%d%d",&n,&m,&Q); for(RG int i=1;i<=n;i++) scanf("%d",&h[i]),hsh[++res]=h[i]; for(RG int i=1;i<=m;i++) scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].c); sort(e+1,e+1+m,cmp);for(int i=1;i<=n;i++) fa[i]=i;tt=n; for(RG int i=1;i<=m;i++){ RG int x=find(e[i].a),y=find(e[i].b); if(y!=x){ tt++;v[tt]=e[i].c;fa[x]=fa[y]=tt;fa[tt]=tt; lnk(tt,x);lnk(tt,y); } } for(RG int i=1;i<=tt;i++){ RG int g=find(i); if(!dfn[g]) dfs1(g,g),dfs2(g,g); } sort(hsh+1,hsh+res+1);res=unique(hsh+1,hsh+1+res)-hsh-1; for(RG int i=1;i<=tot;i++){ rt[i]=rt[i-1]; if(id[i]<=n) insert(rt[i],rt[i],1,res,lower_bound(hsh+1,hsh+1+res,h[id[i]])-hsh); } RG int lastans=0; while(Q--){ RG int u,x,k;scanf("%d%d%d",&u,&x,&k); u^=lastans,x^=lastans,k^=lastans; RG int Lca=jump(u,x); if(sum[rt[ed[Lca]]]-sum[rt[dfn[Lca]-1]]<k) puts("-1"),lastans=0; else lastans=query(rt[dfn[Lca]-1],rt[ed[Lca]],1,res,(sum[rt[ed[Lca]]]-sum[rt[dfn[Lca]-1]])-k+1),printf("%d ",hsh[lastans]),lastans=hsh[lastans]; } return 0; }
上帝与集合:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int N=100050; ll bj[10000005],T; bool vis[10000005]; ll qpow(ll x,ll y,ll mod){ ll ret=1; while(y){ if(y&1) (ret*=x)%=mod; (x*=x)%=mod;y>>=1; } return ret; } ll getphi(ll P){ ll M=P;ll res=P; for(ll i=2;i*i<=P;i++) if(res%i==0) { (M/=i)*=i-1; while(res%i==0) res/=i; } if(res>1) (M/=res)*=res-1; return M; } ll solve(ll p){ if(vis[p]) return bj[p]; ll phi=getphi(p);vis[p]=1; return bj[p]=qpow(2,solve(phi)+phi,p); } int main(){ scanf("%lld",&T);bj[1]=0;vis[1]=1; while(T--){ ll p;scanf("%lld",&p); printf("%lld ",solve(p)); } return 0; }
Savage:
//MADE BY QT666 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int N=100050; int P[N],C[N],l[N],n; int gcd(int x,int y) {return y?gcd(y,x%y):x;} void exgcd(int a,int b,int &x,int &y){ if(!b) x=1,y=0; else exgcd(b,a%b,y,x),y-=(a/b)*x; } bool check(int i,int j,int M){ int a=P[i]-P[j],b=M,c=C[j]-C[i]; int Gcd=gcd(a,b); if(c%Gcd) return 1; int x,y; a/=Gcd;b/=Gcd;c/=Gcd; exgcd(a,b,x,y);b=abs(b); x=((c*x)%b+b)%b; if(!x) x+=b; if(x>min(l[i],l[j])) return 1; return 0; } bool judge(int M){ for(int i=1;i<=n;i++) if(M<C[i]) return 0; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(!check(i,j,M)){ return 0; } } } return 1; } int main(){ freopen("savage.in","r",stdin); freopen("savage.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d%d",&C[i],&P[i],&l[i]); } for(int i=1;i<=1e6;i++){ if(judge(i)) {cout<<i<<endl;return 0;} } return 0; }