第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);
}
}
这道题是一个数论题,下面慢慢来证明:
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);
}
}
相关文章推荐
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F-等式 简单数论题
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F-等式(因子分解)
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--F-等式
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F 等式(数学)
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F-等式
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F等式
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 K 密码 【模拟】
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 K 密码
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 D psd面试
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F 等式 (唯一分解定理)
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 赛后总结
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛(上)
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛补题
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛——旋转矩阵
- 牛客网 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-用来作弊的药水
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 K 密码
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--J-强迫症的序列
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 D psd面试
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 F 等式 (唯一分解定理)