[hoj 1076] Ordered Fractions[Farey 시퀀스]
이것은 귀속구법이다.
확장 유클리드의 정리로 인접한 다음 항목을 구할 수 있다.
공식 K1*L2 - K2*L1 = 1
아직 공부를 안 해서...
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int n;
typedef struct node
{
int up,down;
double val;
}node;
bool cmp(node a, node b)
{
return a.val<b.val;
}
vector<node> v;
int gcd(int x,int y)
{
if(!x) return y;
if(x<y)
{
return gcd(y%x,x);
}
return gcd(x%y,y);
}
void build(int a, int b, int x, int y)
{
int p = a+x;
int q = b+y;
int tmp = gcd(p,q);//
p /= tmp;
q /= tmp;
if(q<=n)
{
build(a,b,p,q);
v.push_back((node){p,q,(double)p/q});
build(p,q,x,y);
}
}
int main()
{
while(scanf("%d",&n)==1)
{
while(!v.empty()) v.pop_back();
v.push_back((node){0,1,0.0});
v.push_back((node){1,1,1.0});
build(0,1,1,1);
sort(v.begin(),v.end(),cmp);
for(vector<node>::iterator it = v.begin();it < v.end(); it++)
{
printf("%d/%d
",it->up,it->down);
}
printf("
");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.