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

原题:

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]);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值