传送门:www.lydsy.com/JudgeOnline/problem.php?id=1406
题意:
解 x^2%n=1
=> (x+1)(x-1)=k*n
令n=ab
a|(x+1)&&b|(x-1) || a|(x-1)&&b|(x+1)
sqrt(n)枚举a,b并检验+去重
Code:
#include<set> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; typedef unsigned int lld; lld n; set<lld>s; int main(){ cin>>n; if(n==1){ puts("None"); return 0; } for(int i=1;i*i<=n;i++){ if(n%i)continue; lld a=i,b=n/i; for(int j=0;j<=n;j+=b){ if((j+2)%a==0&&j+1<n)s.insert(j+1); if((j-2)>=0&&(j-2)%a==0)s.insert(j-1); } } for(set<lld>::iterator it=s.begin();it!=s.end();it++) cout<<*it<<endl; return 0; }