原题:
http://172.16.0.132/junior/#contest/show/1365/1
题目描述:
输入:
第一行两个用空格分开的整数n和m,分别表示P(x)和Q(x)的最高项指数。
第二行包含n+1用空格分开的整数,a0,a1,…,an,表示P(x)的每项系数。
第三行包含m+1用空格分开的整数,b0,b1,…,bm,表示Q(x)的每项系数。
输出:
如果最后得到的极限为正无穷,输出“Infinity”;
如果为负无穷,输出“-Infinity”;
如果最后得到的极限为0,输出“0/1”;
否则,输出一个最简分数,为所得极限的值,以“p/q”的形式,p为分子,q为分母。
样例输入:
样例输入1:
2 1
1 1 1
2 5
样例输入2:
1 0
-1 3
2
样例输入3:
0 1
1
1 0
样例输入4:
2 2
2 1 6
4 5 -7
样例输入5:
1 1
9 0
-5 2
样例输出:
样例输出1:
Infinity
样例输入2:
-Infinity
样例输出3:
0/1
样例输出4:
1/2
样例输出5:
-9/5
数据范围限制:
对于100%的数据:0<=n,m<=100,|ai|,|bi|<10^5。
提示&分析:
实现:
#include<cstdio>
#include<cmath>
int i,n,m,l,a[107],b[107];
bool bz;
void gcd(int x,int y)
{
if(x%y!=0) gcd(y,x%y);
else l=y;
}
int main()
{
freopen("limit.in","r",stdin);freopen("limit.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n+1;i++) scanf("%d",&a[i]);
for(i=1;i<=m+1;i++) scanf("%d",&b[i]);
if(n<m)
printf("0/1");
if(n>m)
if(a[1]>0&&b[1]>0||a[1]<0&&b[1]<0) printf("Infinity");
else printf("-Infinity");
if(n==m)
{
if(a[1]>0&&b[1]>0||a[1]<0&&b[1]<0) bz=true;
else bz=false;
a[1]=fabs(a[1]);
b[1]=fabs(b[1]);
gcd(b[1],a[1]);
a[1]/=l;
b[1]/=l;
if(bz==false) printf("-%d/%d",a[1],b[1]);
else printf("%d/%d",a[1],b[1]);
}
}