SPOJ Finding Fractions
제목 의 대의:
4 개의 정수 a, b, c, d 에 게 두 개의 정수 p, q 를 찾 아 a / b < p / q < c / d, q 가 가장 작 아야 합 니 다. 여러 개의 풀이 존재 한다 면 p 를 찾 는 것 이 가장 작 습 니 다.
연분 수 해법:
a / b 를 설정 하여 아래로 조정 합 니 다.
만약 a / b > = 1, 설정 k = [a / b], 알 수 있 습 니 다 (a / b) - k < (p / q) - k < (c / d) - k, 즉 (a - bk) / b < (p - qk) / q < (c - dk) / d, 설정 a '= a - bk, p' = p - qk, c '= c - dk, a' / b < p '/ q < c' / d 의 해 후, p = p '+ qk, 진실 한 p 와 q 를 얻 을 수 있 습 니 다.
하면, 만약, 만약...
만약 c / d > 1, 그러면 p = q = 1
만약 c / d < = 1, 그러면 문 제 는 d / c < q / p < b / a 로 바 뀔 수 있 습 니 다.
상세 한 설명 을 알 고 싶 으 면 여 기 를 세 게 찌 르 세 요.
#include <iostream>
using namespace std;
typedef long long LL;
LL find(LL a,LL b,LL c,LL d)
{
if(a<b)
{
if(c>d) return 1;
else return find(d,c,b,a)*d/c+1;
}
else
{
LL k=a/b;
return find(a-k*b,b,c-k*d,d);
}
}
int main()
{
LL a,b,c,d,p,q;
while(cin>>a>>b>>c>>d)
{
q=find(a,b,c,d);
p=q*a/b+1;
cout<<p<<"/"<<q<<endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.