P5253-丢番图【数论】
生活随笔
收集整理的這篇文章主要介紹了
P5253-丢番图【数论】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
正題
題目鏈接:https://www.luogu.org/problem/P5253
題目大意
給一個(gè)nnn,求有多少對(duì)x,y(x≤y)x,y(x\leq y)x,y(x≤y)使得
1x+1y=1n\frac{1}{x}+\frac{1}{y}=\frac{1}{n}x1?+y1?=n1?
解題思路
x+yxy=1n\frac{x+y}{xy}=\frac{1}{n}xyx+y?=n1?
n(x+y)=xyn(x+y)=xyn(x+y)=xy
xy?n(x+y)=0xy-n(x+y)=0xy?n(x+y)=0
xy?n(x+y)+n2=n2xy-n(x+y)+n^2=n^2xy?n(x+y)+n2=n2
(x?n)(y?n)=n2(x-n)(y-n)=n^2(x?n)(y?n)=n2
設(shè)a=x?n,b=y?na=x-n,b=y-na=x?n,b=y?n,問(wèn)題就變?yōu)榱饲笥卸嗌賹?duì)(a,b)(a,b)(a,b)
然后對(duì)于∑pici=n\sum p_i^{c_i}=n∑pici??=n
答案就是∏(2?ci)\prod (2*c_i)∏(2?ci?)
注意要考慮本質(zhì)不同
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ll n,ans=1; int main() {scanf("%lld",&n);for(ll i=2;i*i<=n;i++){if(!(n%i)){int z=0;while(!(n%i)) n/=i,z++;ans*=2*z+1;}}if(n!=1) ans*=3; printf("%lld",ans/2+(ans&1)); }總結(jié)
以上是生活随笔為你收集整理的P5253-丢番图【数论】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 白蜡树的种植方法和注意事项 详解白蜡树的
- 下一篇: 土豆团子的做法 土豆团子怎么做