您的位置:首页 > 其它

第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F等式

2018-03-25 16:41 253 查看
链接:https://www.nowcoder.com/acm/contest/90/F

题目描述 

给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数)

输入描述:

在第一行输入一个正整数T。
接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。
(1<=n<=1e9)

输出描述:

输出符合该方程要求的解数。
示例1

输入

3
1
20180101
1000000000

输出

1
5
181


1/x + 1/y = 1/n  ==> xy = xn+yn ==> 
xy-xn-yn+n*n=n*n ==>(x-n)(y-n) = n*n

所以题目就是求 n * n  的因子数

不能直接求 数据太大
所以分解质因子#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

int main()
{
int t;
ll n;
ll ans ;
cin >> t;

while(t --)
{
cin >> n;

ll temp = n * n;
ans = 1;
for(int i = 2;i * i <= temp;i ++)
{
int cnt = 1;
while(temp % i == 0)
{
temp /= i;
cnt ++;
}
ans *= cnt;
}
cout<<ans/2 + 1<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数论
相关文章推荐