您的位置:首页 > 其它

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

2018-03-27 16:39 218 查看
题目链接
这道题是一个数论题,下面慢慢来证明:
1/x+1/y=1/n;
1/y右移—>  得1/x=y-n/ny
令y-n=a    即n=y-a
1/x=a/y(y-a)    即 1/x=a/(y*y-y*a)
使等式成立即a整除(y*y-y*a)
即a整除y*y
最后得答案为y*y的因子数
然后用约数个数定理快速解决问题
注意要
x<=y
那么有由于y*y必定完全平方数,那么
最后结果 为res/2+1#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long n;
scanf("%lld",&n);
long long sum=n*n;
long long res=1;
for(long long i=2;i*i<=sum;i++)
{
long long ans=1;
while(sum%i==0)
{
ans++;
sum/=i;
}
res*=ans;
}
printf("%lld\n",res/2+1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数论
相关文章推荐