Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34293 baka24 【S】T1 C++ 解答错误 90 106 MS 292 KB 1020 2024-11-05 18:42:03

Tests(9/10):


#include<bits/stdc++.h> using namespace std; #define int long long #define it __int128 int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=2000010; int n,Mod; int Pow(it x,int y){ it rt=1; while(y){ if(y&1)rt=rt*x%Mod; x=x*x%Mod; y>>=1; } return rt; } int p[MAXN],cnt; void slv(){ n=read();cnt=0; int tmp=2*n-1,phi=Mod=2*n-1; for(int i=2;i*i<=tmp;i++)if(tmp%i==0){ phi=phi/i*(i-1); while(tmp%i==0)tmp/=i; } if(tmp>1)phi=phi/tmp*(tmp-1); for(int i=1;i*i<=phi;i++)if(phi%i==0){ p[++cnt]=i; if(n/i!=i)p[++cnt]=phi/i; } sort(p+1,p+cnt+1); for(int i=1;i<=cnt;i++){ if(Pow(2,p[i])-1==0){ printf("%lld\n",p[i]); return; } } } signed main(){ int _=read();while(_--) slv(); // cerr<<time(0)<<endl; return 0; }


测评信息: