# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
6812 | gs12117 | 분수 (KPI13_fractions) | C++98 | 0 ms | 1088 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
long long int n;
long long int a,b,c,d;
long long int x[100];
long long int y[100];
long long int xl,yl;
int main(){
long long int i,j,t;
scanf("%lld",&n);
for(i=0;i<n;i++){
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
for(xl=0;;xl++){
if(b==0)break;
x[xl]=a/b;
t=a%b;
a=b;
b=t;
}
for(yl=0;;yl++){
if(d==0)break;
y[yl]=c/d;
t=c%d;
c=d;
d=t;
}
for(j=0;;j++){
if(x[j]!=y[j]||j==xl||j==yl)break;
}
if(j==xl){
x[j]=y[j]+1;
}
else if(j==yl){
x[j]=x[j]+1;
}
else if(x[j]<y[j]){
if(j==yl-1&&x[j]+1==y[j]){
if(j==xl-2&&x[j+1]==2){
j++;
x[j]=1;
j++;
x[j]=2;
}
else{
if(xl!=j+1&&x[j+1]==1){
x[j]++;
}
j++;
x[j]=2;
}
}
else{
x[j]++;
}
}
else{
if(j==xl-1&&y[j]+1==x[j]){
if(j==yl-2&&y[j+1]==2){
x[j]=y[j];
j++;
x[j]=1;
j++;
x[j]=2;
}
else{
x[j]=y[j];
if(yl!=j+1&&y[j+1]==1){
x[j]++;
}
j++;
x[j]=2;
}
}
else{
x[j]=y[j]+1;
}
}
a=1;
b=0;
while(j>=0){
t=a;
a=b;
b=t;
a+=x[j]*b;
j--;
}
printf("%lld %lld\n",a,b);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |