bzoj1406: [AHOI2007]密码箱
2017-04-25 07:34
411 查看
传送门
首先x2=kn+1
然后x2−1=kn
得到(x−1)(x+1)=kn+1
设x−1=k1n1,x+1=k2n2,k1k2=k,n1n2=n
爆枚n2(n2>n1),代入答案验证。
首先x2=kn+1
然后x2−1=kn
得到(x−1)(x+1)=kn+1
设x−1=k1n1,x+1=k2n2,k1k2=k,n1n2=n
爆枚n2(n2>n1),代入答案验证。
#include<cstring> #include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm> #define ll long long using namespace std; ll n,tot,b,s,a[1000005]; int main(){ scanf("%lld",&n); tot=0; for (ll i=1;i*i<=n;i++) if (n%i==0){ b=n/i; for (ll j=1;j<=n;j+=b) if ((j+1)%i==0){ tot++; a[tot]=j; } for (ll j=b-1;j<=n;j+=b) if ((j-1)%i==0){ tot++; a[tot]=j; } } sort(a+1,a+1+tot); s=0; for (int i=1;i<=tot;i++) if (a[i]!=a[i-1]) a[++s]=a[i]; if (!s) printf("None"); else for (int i=1;i<=s;i++) printf("%lld\n",a[i]); }
相关文章推荐
- BZOJ1406[AHOI2007密码箱]
- bzoj 1406: [AHOI2007]密码箱
- [BZOJ1406][AHOI2007]密码箱
- BZOJ1406 [AHOI2007] 密码箱
- BZOJ1406 [AHOI2007]密码箱
- [数论] BZOJ 1406 [AHOI2007]密码箱
- BZOJ-1406-密码箱-AHOI2007-数学
- BZOJ_1406_[AHOI2007]密码箱_枚举+数学
- 【二次剩余】【bzoj 1406】: [AHOI2007]密码箱
- bzoj 1406: [AHOI2007]密码箱
- bzoj 1406: [AHOI2007]密码箱 数学
- BZOJ1406 [AHOI2007]密码箱
- BZOJ系列1406《[AHOI2007]密码箱》题解
- 【bzoj1406】【AHOI2007】【密码箱】【数论】
- 【bzoj 1406】[AHOI2007]密码箱(数学相关)
- BZOJ 1406: [AHOI2007]密码箱
- 【BZOJ】【1406】【AHOI2007】密码箱
- BZOJ 1406: [AHOI2007]密码箱
- BZOJ 1406 [AHOI2007]密码箱 数论
- 【bzoj1406】[AHOI2007]密码箱