• ACM 比大小


    比大小

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    给你两个很大的数,你能不能判断出他们两个数的大小呢?

    比如123456789123456789要大于-123456

     
    输入
    每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
    数据保证输入的a,b没有前缀的0。
    如果输入0 0表示输入结束。测试数据组数不超过10组
    输出
    如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
    样例输入
    111111111111111111111111111 88888888888888888888
    -1111111111111111111111111  22222222
    0 0

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char a[1000],b[1000];
        int sa = 0;
        int sb = 0;
        int hit = 0;
        while(true)
        {
            memset(a, 0, sizeof(a));
            memset(b, 0, sizeof(b));
            sa = sb = hit = 0;
            scanf("%s%s", a, b);
            if(*a == '0' && *b == '0')
                break;
            if(*a == '-')
                sa = 1;
            if(*b == '-')
                sb = 1;
            if(sa == 0 && sb == 1)
                hit = 1;
            else if(sa == 1 && sb == 0)
                hit = -1;
            else
            {
                int alen, blen, i = 0;
                alen = strlen(a) - sa;
                blen = strlen(b) - sb;
                if(alen > blen)
                    hit = 1;
                else if(alen < blen)
                    hit = -1;
                else if(alen == blen)
                {
                    i = sa;
                    hit = 0;
                    while(i < alen + sa)
                    {
                        if(a[i] < b[i])
                        {
                            hit = -1;
                            break;
                        }
                        else if(a[i] > b[i])
                        {
                            hit = 1;
                            break;
                        }
                        i++;
                    }
                    hit = hit * (sa > 0 ? -1:1);
                }
            }
            if(hit == 1)
                printf("a>b
    ");
            else if(hit == -1)
                printf("a<b
    ");
            else if(hit == 0)
                printf("a==b
    ");
        }
        return 1;
    }


  • 相关阅读:
    traceroute命令
    Apache部署django项目
    Linux中变量#,#,@,0,0,1,2,2,*,$$,$?的含义
    Python正则表达式
    Python 字符串格式化 (%操作符)
    Python初学者的一些编程技巧
    Linux命令 ls -l 输出内容含义详解
    Django 前后台的数据传递示列
    hibernate基础(一)
    MySQL之多表
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/4564553.html
Copyright © 2020-2023  润新知