很久之前做的题了,求极限的。
因为题目给的样例都可以用某种规律来求(我觉得大家都应该学高数了吧…至于什么规律,且如何得到我就不费笔墨了。)而且样例提示很详尽的,把所有情况都概括了。
所以进行分支,对每种情况判断一下,就好了。
不过其中主要的还是约分,可以用,这个用辗转相除的方法求出最大公约数,然后化简输出
以前觉得巨难,现在觉得很了了。但也遇到了一点小状况…
读题不清,结果是0输出 0/1 …哎,卡了老长时间,难受了
代码:
#include <iostream>
using namespace std;
int n, m;
int gcd(int a, int b){
return b == 0? a : gcd(b,a%b);
}
void slove(int a, int b){
if(n > m){
if(a*b < 0) cout << '-';
cout << "Infinity" << endl;
}
else if(n < m)
cout << "0/1" << endl;
else {
if(a*b < 0) cout << '-';
if(a < 0)
a = -a;
if(b < 0)
b = -b;
int r = gcd(a,b);
cout << a/r << '/' << b/r << endl;
}
return;
}
int main(){
cin >> n >> m;
int a, b, num;
cin >> a;
for(int i = 0; i < n; ++i)
cin >> num;
cin >> b;
for(int i = 0; i < m; ++i)
cin >> num;
slove(a,b);
return 0;
}