划水摸鱼。。。唔唔唔好困。。。被课内D爆 惨啊
这题就是k^2-1=n*d 求k的解嘛
变形一下 (k+1)(k-1)=n*d
分解一波质因数,我们可以搞成k+1=n1*d1,k-1=n2*d2
枚举一下乱搞就好
#include#include #include #include #include #include #include using namespace std;typedef long long LL;set s;set :: iterator it;int ylen;LL yue[110000];int main(){ LL n; scanf("%lld",&n); if(n==1){printf("None\n");return 0;} for(LL i=1;i*i<=n;i++) if(n%i==0)yue[++ylen]=n/i; s.insert(1); for(int i=1;i<=ylen;i++) for(int j=1;yue[i]*j-1<=n;j++) { if((yue[i]*j+2)%(n/yue[i])==0&&yue[i]*j+1<=n)s.insert(yue[i]*j+1); if((yue[i]*j-2)%(n/yue[i])==0&&yue[i]*j-1>=0)s.insert(yue[i]*j-1); } for(it=s.begin();it!=s.end();it++)printf("%lld\n",*it); return 0;}