码迷,mamicode.com
首页 > 其他好文 > 详细

JZYZOJ 1629 找分子

时间:2019-10-18 17:26:11      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:mes   格式   输入格式   gis   include   统计   pac   pre   main   

题目描述

给定\(n(2≤n≤10^9)\)值,要求\(x\)\(y\)均为正整数,且\(x<y\),并且满足\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n}\).编程统计有多少对这样的\(x\)\(y\)

输入格式

一个整数n

输出格式

一个整数,表示相应的方法数是多少。

样例输入

6

样例输出

4

思路

先把原方程化简
\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n} \Rightarrow \frac{xy}{x+y} = \frac{1}{n} \Rightarrow xy = nx + ny \Rightarrow xy-nx-ny = 0 \Rightarrow xy - nx -ny + n^2 = n^2 \Rightarrow n^2 = (n-x)(n-y)\)

所以原方程等价于\(n^2 = (n-x)(n-y)\)

\(a = n-x , b = n-y\)\(a < b\)

\(n^2=ab\)

不难发现\(a\)\(b\)\(n^2\)的一组因子

如果\(n^2\)\(k\)个因子,就有\(\frac{k}{2}\)组解,对应了\(\frac{k}{2}\)\(x\)\(y\)

我们把\(n\)进行质因数分解得$n=a_{1}^{p_{1}}\times a_{2}^{p_{2}}\times a_{3}^{p_{3}}\times \dots a_{m}^{p_{m}} $

\(n\)\(\Pi_{i=1}^{m}(p_{i}+1)\)个因子

同样把\(n^2\)进行质因数分解得$n^{2}=a_{1}^{2p_{1}}\times a_{2}^{2p_{2}}\times a_{3}^{2p_{3}}\times \dots a_{m}^{2p_{m}} $

\(n^2\)\(\Pi_{i=1}^{m}(2p_{i}+1)\)个因子

所以\(result =\frac{k}{2}=\frac{1}{2}\Pi_{i=1}^{m}(2p_{i}+1)\)

coding

#include <bits/stdc++.h>
using namespace std;


int n,result = 1;


int main()
{
    cin >> n;
    for(register int i = 2;i * i <= n;i ++)
    {
        if(n % i) continue;
        register int cnt = 0;
        while(n % i == 0) cnt ++, n /= i;
        result *= cnt * 2  + 1;
    }
    if(n > 1) result *= 3;
    result >>= 1;
    cout << result << endl;
    return 0;
}

JZYZOJ 1629 找分子

标签:mes   格式   输入格式   gis   include   统计   pac   pre   main   

原文地址:https://www.cnblogs.com/Mark-X/p/11699437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!