美文网首页
笔试刷题-爱奇艺2018-07-20

笔试刷题-爱奇艺2018-07-20

作者: Dodo159753 | 来源:发表于2018-07-20 07:58 被阅读0次

    题目描述:

    /**
    对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,
    例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.
    牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。
    输入描述:
    输入包括一行,一行中有4个正整数x1, k1, x2, k2(1 ≤ x1,x2 ≤ 10^9, 1 ≤ k1,k2 ≤ 50),以空格分割
    输出描述:
    如果v1小于v2输出"Less",v1等于v2输出"Equal",v1大于v2输出"Greater".
    输入例子1:
    1010 3 101010 2
    输出例子1:
    Equal
    */
    
    

    思路如下:

    若v1.lenk1!=v2.lenk2那么返回更长的一个
    一个组合出来的数最多9*50位
    用mod循环按照人类判断方式判断长度相同的情况即可

    代码如下:

    #include<stdio.h>
    #include<iostream>
     
    #define MAX_DIGIT 15
     
    using namespace std;
     
    int x1Seq[MAX_DIGIT], x2Seq[MAX_DIGIT];
     
    int GetLen(int x, int xSeq[])
    {
        if(x<=0)
            return -1;
        int cnt=0;
        while(x)
        {
            xSeq[cnt]=x%10;
            x/=10;
            cnt++;
        }
        int l=0, r=cnt-1;
        while(l<r)
        {
            int temp=xSeq[l];
            xSeq[l]=xSeq[r];
            xSeq[r]=temp;
            l++;
            r--;
        }
        return cnt;
    }
     
    int main()
    {
        int x1, k1, x2, k2, len1, len2;
        scanf("%d%d%d%d", &x1, &k1, &x2, &k2);
        len1=GetLen(x1, x1Seq);
        len2=GetLen(x2, x2Seq);
        int flag=0;
        if(len1*k1>len2*k2)
        {
            flag=1;
        }
        else if(len1*k1<len2*k2)
        {
            flag=-1;
        }
        else
        {
            //总体长度相等
            int totalLen=len1*k1;
            for(int cur=0; cur<totalLen; cur++)
            {
                if(x1Seq[cur%len1]>x2Seq[cur%len2])
                {
                    flag=1;
                    break;
                }
                else if(x1Seq[cur%len1]<x2Seq[cur%len2])
                {
                    flag=-1;
                    break;
                }
            }
        }
        if(flag==-1)
        {
            printf("Less");
        }
        else if(flag==1)
        {
            printf("Greater");
        }
        else if(flag==0)
        {
            printf("Equal");
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:笔试刷题-爱奇艺2018-07-20

          本文链接:https://www.haomeiwen.com/subject/ypffmftx.html