第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题

B - 大还是小?

Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format:

Description

输入两个实数,判断第一个数大,第二个数大还是一样大。每个数的格式为: [整数部分].[小数部分]

简单起见,整数部分和小数部分都保证非空,且整数部分不会有前导 0。不过,小数部分的最 后可以有 0,因此 0.0 和 0.000 是一样大的。

Input

输入包含不超过 20 组数据。每组数据包含一行,有两个实数(格式如前所述)。每个实数都 包含不超过 100 个字符。

Output

对于每组数据,如果第一个数大,输出"Bigger"。如果第一个数小,输出"Smaller"。如果两个 数相同,输出"Same"。

Sample Input

1.0 2.0
0.00001 0.00000
0.0 0.000

Sample Output

Case 1: Smaller
Case 2: Bigger
Case 3: Same

好吧.......因为队里刷题我是从前往后刷,所以这道水题先被我看见A了,题意全是中文也没什么可解释的。数字的位数是100字符,所以必须要用字符串来处理了,小数点后面的自动补上0以方便最后判断是否相同,然后小数点前面的谁位数多谁就大,位数一样就从第一个数开始比较,一直比出结果为止。这题输入的格式已经固定好了是“整数部分.小数部分"所以不用担心出现一个没有小数点的数,直接比较就可以了。

下面代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[105],b[105];

int max(int a,int b)
{
    return a>b?a:b;
}

int main()
{
    int len1,len2;
    int i,j;
    int k=0;
    int d1,d2;
    int t;
    while(scanf("%s",a)!=EOF)
    {
        scanf("%s",b);
        len1=strlen(a);
        len2=strlen(b);
        for(i=len1;i<102;i++)
        {
            a[i]=‘0‘;
        }
        for(i=len2;i<102;i++)
        {
            b[i]=‘0‘;
        }
        t=0;
        k++;
        d1=len1;
        d2=len2;
        cout<<"Case "<<k<<": ";
        for(i=0;i<len1;i++)
        {
           if(a[i]==‘.‘)
           {
               d1=i;
               break;
           }
        }
        for(i=0;i<len2;i++)
        {
            if(b[i]==‘.‘)
            {
                d2=i;
                break;
            }
        }
        if(d1>d2)
        {
            cout<<"Bigger"<<endl;
            t=2;
        }
        else if(d1<d2)
        {
            cout<<"Smaller"<<endl;
            t=2;
        }
        else
        {
            for(i=0;i<max(len1,len2);i++)
            {
                if(a[i]>b[i])
                {
                    t=1;
                    break;
                }
                else if(a[i]<b[i])
                {
                    t=-1;
                    break;
                }
            }
        }
        if(t==0)
            cout<<"Same"<<endl;
        else if(t==1)
            cout<<"Bigger"<<endl;
        else if(t==-1)
            cout<<"Smaller"<<endl;
    }
    return 0;
}
时间: 2024-10-09 11:30:45

第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题的相关文章

2015关于第十一届&quot;蓝狐网络杯&quot;湖南省大学生计算机程序设计竞赛的总结

------------------------------------------------------------------------人生总是需要我们不断受挫,不断总结.然后继续前行! 回顾我的大学,我没有一般同学那么"幸运",有长长的假期,可以去做自己想做的事.我选择是另一条路,一条我当初自己也望不到的未来方向的路,但我是一个不服输的人,我不想,自己决定的事,因为某些原因,而轻易放弃! 再说这次省赛吧,我觉得相对于去年的题,今天的题相对简单一些,主要考基本算法和思维吧(认为

湖南省第七届大学生计算机程序设计竞赛 RMQ with Shifts (线段树)

RMQ with Shifts 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each query (L, R) (L<=R), we report the minimum value among A[L], A[L+1], -, A[R]. Note that the indic

湖南省第十届大学生计算机程序设计竞赛:酷酷的单词

1505: 酷酷的单词 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 237 Solved: 88 [Submit][Status][Web Board] Description 输入一些仅由小写字母组成的单词.你的任务是统计有多少个单词是"酷"的,即每种字母出现的次数都不同. 比如ada是酷的,因为a出现2次,d出现1次,而1和2不同.再比如,banana也是酷的,因为a出现3次,n出现2次,b出现1次.但是,bbacccd不是酷的,因

2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n and q questions. The i-th question is whether P remains balanced after pai and pbi  swapped. Note that questions ar

湖南省第七届大学生计算机程序设计竞赛 报数游戏

报数游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述     n 个人站成一行玩一个报数游戏.所有人从左到右编号为 1 到 n.游戏开始时,最左边的人报 1,他右边的人报 2,编号为 3 的人报 3,等等.当编号为 n 的人(即最右边的人)报完 n 之后,轮到他左边的人(即编号为n-1 的人)报 n+1,然后编号为 n-2 的人报 n+2,以此类推.当最左边的人再次报数之后,报数方向又变成从左到右,依次类推. 为了防止游戏太无聊,报数时有一个特例:如果应该报的数

CSU OJ 1120 病毒(湖南省第八届大学生计算机程序设计竞赛)

 1120: 病毒 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 146  Solved: 53 [Submit][Status][Web Board] Description 你有一个日志文件,里面记录着各种系统事件的详细信息.自然的,事件的时间戳按照严格递增顺序排列(不会有两个事件在完全相同的时刻发生). 遗憾的是,你的系统被病毒感染了,日志文件中混入了病毒生成的随机伪事件(但真实事件的相对顺序保持不变).备份的日志文件也被感染了,但由于

湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 228     Solved: 30 Description 在一次足球联合训练中一共有n支队伍相互进行了若干场比赛. 对于每场比赛,赢了的队伍得3分,输了的队伍不得分,如果为平局则两支队伍各得1分. Input 输入包含不超过1000组数据. 每组数据的第

CSU OJ 1111 三家人 (湖南省第八届大学生计算机程序设计竞赛)

 1111: 三家人 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 356  Solved: 142 [Submit][Status][Web Board] Description 有三户人家共拥有一座花园,每户人家的太太均需帮忙整理花园.A 太太工作了5 天,B 太太则工作了4 天,才将花园整理完毕.C 太太因为正身怀六甲无法加入她们的行列,便出了90元.请问这笔钱如何分给A.B 二位太太较为恰当?A 应得多少元?90/(5+4)*5=$5

湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

多连块拼图 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述     多连块是指由多个等大正方形边与边连接而成的平面连通图形.         ---- 维基百科 给一个大多连块和小多连块,你的任务是判断大多连块是否可以由两个这样的小多连块拼成.小多连块只能平移,不能旋转或者翻转.两个小多连块不得重叠.左下图是一个合法的拼法,但右边两幅图都非法.中间那幅图的问题在于其中一个小多连块旋转了,而右图更离谱:拼在一起的那两个多连块根本就不是那个给定的小多连块(给定的小多连块