您的位置:首页 > 其它

2017.1.15【初中部 】普及组模拟赛C组 小x的极限 题解

2017-01-15 22:39 211 查看

原题:

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]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: