제출 #6822

#제출 시각아이디문제언어결과실행 시간메모리
6822gs12117분수 (KPI13_fractions)C++98
1 / 1
76 ms1088 KiB
#include<stdio.h>
int n;
int a,b,c,d;
int x[100];
int y[100];
int xl,yl;
int main(){
	int i,j,t;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d%d%d%d",&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){
						j+=2;
						x[j]++;
					}
					else{
						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){
						j++;
						x[j]=1;
						j++;
						x[j]=y[j]+1;
					}
					else{
						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("%d %d\n",a,b);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...