1361.分数约简
时间限制: 1000 MS 内存限制: 65536 K
提交数: 1300 (0 users) 通过数: 299 (283 users)
问题描述
自从小明拜小强为师后,自知和师傅之间有着无法逾越的差距!不过他并不气馁,他决定通过的努力一点一点缩短与师傅之间的距离!这不才刚学完循环结构,他就迫不及待的想练习了。于是他自己去找了一些题来练手!
这第一个题很简单,就是给出一个分数,把它化为最简分式。
输入格式
第一行输入一个整数T,代表有T个测试数据。
接下来的T行,每行输入两个非负整数m、n,m是分子,n是分母。
输出格式
输出最简分式,格式a/b。若b=1,只输出a;若分母n=0,则输出"Error!"(输出无引号)
样例输入
3
12 16
15 3
20 0
样例输出
3/4
5
Error!
来源
时间限制: 1000 MS 内存限制: 65536 K
提交数: 1300 (0 users) 通过数: 299 (283 users)
问题描述
自从小明拜小强为师后,自知和师傅之间有着无法逾越的差距!不过他并不气馁,他决定通过的努力一点一点缩短与师傅之间的距离!这不才刚学完循环结构,他就迫不及待的想练习了。于是他自己去找了一些题来练手!
这第一个题很简单,就是给出一个分数,把它化为最简分式。
输入格式
第一行输入一个整数T,代表有T个测试数据。
接下来的T行,每行输入两个非负整数m、n,m是分子,n是分母。
输出格式
输出最简分式,格式a/b。若b=1,只输出a;若分母n=0,则输出"Error!"(输出无引号)
样例输入
3
12 16
15 3
20 0
样例输出
3/4
5
Error!
来源
xmu
#include <stdio.h>
#define SWAP(x, y) {int t = x; x = y; y = t;}
int gcd(int a, int b)
{
int temp;
if (a > b)
SWAP(a, b)
while (b > 0)
{
temp = a % b;
a = b;
b = temp;
}
return a;
}
int main()
{
int t, m, n;
int gcd_value;
scanf("%d", &t);
while (t--)
{
scanf("%d %d", &m, &n);
if (n == 0)
{
printf("Error!\n");
continue;
}
gcd_value = gcd(m, n);
m /= gcd_value;
n /= gcd_value;
if (n == 1)
printf("%d\n", m);
else
printf("%d/%d\n", m, n);
}
return 0;
}