Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34289 A21μΘ_wjy 【S】T1 C++ 解答错误 90 107 MS 360 KB 1168 2024-11-05 18:31:47

Tests(9/10):


#include<bits/stdc++.h> #define int long long #define i128 __int128 using namespace std; inline int Phi(int x){ int ans=x; for(int i=2;i*i<=x;i++){ if(x%i==0){ ans=ans/i*(i-1); while(x%i==0)x/=i; } } if(x>1)ans=ans/x*(x-1); return ans; } inline int qpow(int a,int b,int p){ i128 ans=1; i128 c=a; while(b){ if(b&1)ans=ans*c%p; c=c*c%p; b>>=1; } return (int)ans; } inline int Get(int x){ vector<int> D; D.clear(); int P=Phi(x); for(int i=1;i*i<=P;i++){ if(P%i==0)D.push_back(i); } int T=D.size(); for(int i=T-1;i>=0;i--){ int c=P/D[i]; if(c!=D[i])D.push_back(c); } // cout<<x<<" "<<P<<endl; // for(auto t:D)cout<<t<<" "; // cout<<endl; T=D.size(); for(int i=0;i<T;i++){ // cout<<D[i]<<" "<<qpow(2,D[i],x)<<endl; if(qpow(2,D[i],x)==1)return D[i]; } } inline void Sub1(){ int T; cin>>T; while(T--){ int n; cin>>n; cout<<Get(2*n-1)<<endl;; } } signed main(){ Sub1(); }


测评信息: