专栏文章
题解:P14628 [2018 KAIST RUN Fall] Fractions
P14628题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mimy9mxs
- 此快照首次捕获于
- 2025/12/01 17:31 3 个月前
- 此快照最后确认于
- 2025/12/01 17:31 3 个月前
分析
显然,直接双重循环会超时。
我们可以枚举合法数对,不满足最简分数的 数对直接跳过。
合适的通过成倍数放大得到 数对。
设放大倍数为 。
通过把据题意得到的式子 以及 可以得到 和 这两个式子。
当 时,计算个数即可。
代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int ans=0;
for(int i=1;i<=998;i++)
{
int m1=999-i;
if(m1<1) continue;
for(int j=1;j<=m1;j++)
{
if(__gcd(i,j)!=1) continue;
int m2=(a+i-1)/i;
int m3=(c+j-1)/j;
int m4=max(m2, m3);
int m5=b/i;
int m6=d/j;
int m7=min(m5,m6);
if(m4<=m7) ans+=m7-m4+1;
}
}
cout<<ans<<endl;
return 0;
}
本文工具使用说明
本文使用洛谷题解格式化工具检查格式。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...