题解:P14628 [2018 KAIST RUN Fall] Fractions
题意理解
题中定义“修能分数”,如下:
一个正有理数
现给定
分析
由于题中规定
设
因此,对于每一对
AC 代码
::::success[C++ AC 代码]
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll A,B,C,D;
ll gmin,gmax;
ll ans;
int main(){
cin>>A>>B>>C>>D;
for(ll a=1;a<=998;a++){
for(ll b=1;a+b<=999;b++){
if (__gcd(a,b)!=1) continue;
gmin=max((A+a-1)/a,(C+b-1)/b);
gmax=min(B/a,D/b);
if(gmin<=gmax) ans=ans+(gmax-gmin+1);
}
}
cout<<ans<<endl;
return 0;
}
C++ AC 记录
::::
::::success[Python AC 代码]
from math import gcd
A,B,C,D=map(int,input().split())
ans=0
for a in range(1,999):
for b in range(1,1000-a):
if gcd(a,b)!=1:
continue
gmin=max((A+a-1)//a,(C+b-1)//b)
gmax=min(B//a,D//b)
if gmin<=gmax:
ans=ans+(gmax-gmin+1)
print(ans)
Python AC 记录
::::