很容易的一个题,但是题目有个坑
比如说输入:
1
-1 1
输出结果应该为:-1/2 2
而不是:1/-2 2
但是题目中又没有说清楚
感觉是因为题目不严谨
代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAXN 1010
#define LL long long
using namespace std;
int k[MAXN], e[MAXN];
int gcd(int a, int b) {
return b ? gcd(b, a%b) : a;
}
int main(void) {
int n, x, y, tmp;
while(cin >> n) {
for(int i=1; i<=n; ++i) {
cin >> k[i] >> e[i];
}
for(int i=1; i<=n; ++i) {
x = k[i];
y = e[i]+1;
tmp = gcd(x, y);
x /= tmp;
y /= tmp;
if(y == 1 || y == -1) {
cout << x << " " << e[i]+1;
} else {
if(x*y < 0 && y<0) {
x *= -1;
y *= -1;
}
cout << x << "/" << y << " " << e[i]+1;
}
if(i < n)
printf(" ");
}
printf("\n");
}
return 0;
}