1019: 分数化简


Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld

Description

 这天老师给小豪出了一道很简单题目放松:输入一个分数,让你求出它们的最简分数。

Input

 第一行包括一个T,表示测试数据的组数。

接下来T行每行包括一个分数。(分子分母均在int范围内)

Output

 对于每个测试样例,输出一行其最简分数。

Sample Input

 

3
2/6
3/1
11/36

 

Sample Output

1/3
3/1
11/36


题目分析:

然而一点点除会爆T

所以用辗转相除法求出最大公因数,然后用分子分母同除。


#include<stdio.h>
#include<string.h>
int min(int x,int y)
{
    int z;
    if(x<y)
        z=x;
    else
        z=y;
    return z;
}
int max(int x,int y)
{
    int z;
    if(x>y)
        z=x;
    else
        z=y;
    return z;
}
int main()
{
	int f,i,j,a,b,n,r,a1,b1,m;
	while(scanf("%d",&n)!=EOF)
	{
		for(j=1;j<=n;j++)
		{
			scanf("%d/%d",&a,&b);
				r=min(a,b);
				a1=a;
				b1=b;
				while(max(a1,b1)%min(a1,b1)!=0)
				{
					r=max(a1,b1)%min(a1,b1);
					if(a1==max(a1,b1))
						a1=r;
					else
						b1=r;
				}
				m=min(a1,b1);
			printf("%d/%d\n",a/m,b/m);
		}
	}
	return 0;
}