版权声明:随意转载哦......但还是请注明出处吧: https://blog.csdn.net/dreaming__ldx/article/details/85050177
传送门
简单数论暴力题。
题目简述:要求求出所有满足
且
的
考虑到使用平方差公式变形。
即
然后就可以枚举
大于
的约数
来求出可能的
。
由上面的式子知道
或者
因此就很好判断了。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
int n,tot;
vector<int>ans,stk;
int main(){
scanf("%d",&n);
for(ri i=1;i*i<=n;++i)if(n%i==0)stk.push_back(n/i);
for(ri i=stk.size()-1;~i;--i){
int d=stk[i];
for(ri j=d;j<=n;j+=d){
if((j-2)%(n/d)==0)ans.push_back(j-1);
if((j+2)%(n/d)==0)ans.push_back(j+1);
}
}
sort(ans.begin(),ans.end()),tot=unique(ans.begin(),ans.end())-ans.begin()-1;
puts("1");
for(ri i=0;i<tot;++i)cout<<ans[i]<<'\n';
return 0;
}