zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    Android系统移植与驱动开发案例 第一章
    收缩SQL数据库日志文件
    SQL Server Configuration Manager出错
    sql server 2008 评估期已过期解决办法
    服务器管理器打开角色、功能出错
    常用网络命令(windows)
    linux 常用命令
    获取指定月的最后一天
    浅谈JVM原理
    Maven+SSM+oracle框架实现简单的增删改查
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/4564553.html
Copyright © 2011-2022 走看看