CSU 1777: 大还是小?【模拟/后导0】
| 293419 | roniking | 1777 |
Accepted
|
2032 | 0 | C++ | 2000 | 2018-04-03 19:21:25 |
Description
Input
Output
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
Hint
Source
湖南省第十一届大学生计算机程序设计竞赛
【代码】:
【分析】:
[整数部分判断]:用string.find函数找到小数点的位置,在这之前的字符串转换为数值比较大小,若不相等则可以直接判断谁大谁小,否则还要继续判断小数位。
[小数部分判断]:截取小数点后的部分,若位数不同用0填补成相同位数。比如0.03和0.0300变成0300=0300或者0.0050和0.07变成0050<0700,这样位数相同可以直接用string比较字典序。
字典序解释:
设想一本英语字典里的单词,何者在前何者在后?显然的做法是先按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。通过这种方法,我们可以给本来不相关的单词强行规定出一个顺序。“单词”可以看作是“字母”的字符串,而把这一点推而广之就可以认为是给对应位置元素所属集合分别相同的各个有序多元组规定顺序:下面用形式化的语言说明。而数字也有字典序.
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<set>
#include<map>
#include<sstream>
#include<queue>
#include<cmath>
#include<list>
#include<vector>
#include<string> using namespace std; #define long long ll
const double PI = acos(-1.0);
const double eps = 1e-;
const int inf = 0x3f3f3f3f;
const int N = ;
int n, m, tot;
int a[][];
int x, y; int main()
{ string a, b;
int ai = , bi = , c = , ad, bd;
while(cin >> a >> b)
{
ai = , bi = , ad = , bd = ;
int x = a.find('.'); //
int y = b.find('.'); //1
//cout<<x<<endl;
for(int i=; i<x; i++)
{
ai = ai * + a[i] - '';
}
for(int i=; i<y; i++)
{
bi = bi * + b[i] - '';
}
printf("Case %d: ",c++);
//cout<<"ai = "<<ai<<" "<<"bi = "<<bi<<endl;
int ca = , cb = , pa, pb;
if(ai > bi)
{
printf("Bigger\n");
}
else if(ai < bi)
{
puts("Smaller");
}
else
//12.0050 12.007
//0500 700
{
//0.2 0.2000
string sa = a.substr(x+,a.size());
string sb = b.substr(y+,b.size());
int an = sa.size();//
int bn = sb.size();//
if(an > bn)
{
for(int i=; i<an-bn;i++)
{
sb += '';
}
}
if(an < bn)
{
for(int i=; i<bn-an;i++)
{
sa += '';
}
}
//cout<<sa<<" "<<sb<<endl;
if(sa > sb)
{
puts("Bigger");
}
else if(sa < sb)
{
puts("Smaller");
}
else
{
puts("Same");
}
}
} return ;
}
/*
0.0005000
0.0007
*/
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<set>
#include<map>
#include<sstream>
#include<queue>
#include<cmath>
#include<list>
#include<vector>
#include<string>
using namespace std;
#define long long ll
const double PI = acos(-1.0);
const double eps = 1e-;
const int inf = 0x3f3f3f3f;
const int N = ;
int n, m, tot;
int a[][];
int x, y; int main()
{ string a, b;
int ai = , bi = , c = , ad, bd;
while(cin >> a >> b)
{
ai = , bi = , ad = , bd = ;
int x = a.find('.'); int y = b.find('.');
for(int i=; i<x; i++)
ai = ai * + a[i] - '';
for(int i=; i<y; i++)
bi = bi * + b[i] - '';
printf("Case %d: ",c++); int ca = , cb = , pa, pb; if(ai > bi)
printf("Bigger\n");
else if(ai < bi)
puts("Smaller");
else
{
string sa = a.substr(x+,a.size());
string sb = b.substr(y+,b.size());
int an = sa.size();
int bn = sb.size();
if(an > bn)
for(int i=; i<an-bn;i++)
sb += '';
if(an < bn)
for(int i=; i<bn-an;i++)
sa += '';
if(sa > sb)
puts("Bigger");
else if(sa < sb)
puts("Smaller");
else
puts("Same");
}
} return ;
}
压行版(滑稽脸
CSU 1777: 大还是小?【模拟/后导0】的更多相关文章
- 数据结构:堆排序 (python版) 小顶堆实现从大到小排序 | 大顶堆实现从小到大排序
#!/usr/bin/env python # -*- coding:utf-8 -*- ''' Author: Minion-Xu 小堆序实现从大到小排序,大堆序实现从小到大排序 重点的地方:小堆序 ...
- 第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题
B - 大还是小? Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Description 输入两个实数,判断第一个数大 ...
- 【C++】数组-整数从大到小排序
1.实现过程 定义整型数组src,长度为10,初始化为{11,12,47,24,49,69,90,89,18,39}.之后用嵌套for循环比较相邻两个元素的大小,如果前一个元素大于后一个,不做任何操作 ...
- linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息
zhuazai:https://blog.csdn.net/sty945/article/details/79830915 前言 ls命令 ls -a ls -l ll du命令 du -s du - ...
- Java中通过Array.sort()对数组从大到小排序
package com.itheimajavase; import java.util.Arrays; import java.util.Comparator; public class Day01 ...
- 嵌入式-C语言基础:快速选择排序实现从大到小排序
#include<stdio.h> int main() { /*简单选择排序:从大到小:一共比较sizeArr-1轮,每一轮的第一个数是arr[i],第一个数依次和它后面的每个数比较*/ ...
- 嵌入式-c语言基础:冒泡排序实现从大到小排列
#include<stdio.h> int main() { /*冒泡排序:从大到小*/ /*i=0 第1轮(i+1):需要比较9次(sizeArr-i-1)*/ /*i=1 第2轮(i+ ...
- hashmap先按照value从大到小排序,value相等时按照key从小到大排序
hashmap先按照value从大到小排序,value相等时按照key从小到大排序. [2]是从小到大排序,在[2]代码基础上交换o1,o2位置即可. 代码中用到[1]中提到的在value相等时再比较 ...
- 查看进程,按内存从大到小 ,查看进程,按CPU利用率从大到小排序
查看进程,按内存从大到小 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr 查看进程,按CPU利用率从大到小排序 ps -e -o "% ...
随机推荐
- POJ 3414 BFS 输出过程
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17456 Accepted: 7407 Special J ...
- LeetCode刷题感想
断断续续用了半年的时间把LeetCode刷完了,之前复习了数据结构与算法.将刷题与复习数据结构结合起来会更有效果.总之不是为了刷题而刷题,而是为了巩固和补充一部分知识. LeetCode真的是一个很好 ...
- java以正确的方式停止线程
java线程停止可以说是非常有讲究的,看起来非常简单,但是也要做好一些防范措施,一般停止一个线程可以使用Thread.stop();来实现,但是最好不要用,因为他是不安全的. 大多数停止线程使用Thr ...
- laravel5.2总结--服务提供者,契约(Contracts)
首先理解两个概念 1.契约:一组定义了框架核心服务的接口 2.服务提供者:所有 Laravel 应用程序启动的中心所在. 包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者 ...
- 分布式存储系统可靠性系列五:副本放置算法 & CopySet Replication
本文来自网易云社区 作者:孙建良 在分布式存储系统 中说明了,在一定情况下,copyset的数量不是越多越好,在恢复时间确定的情况下,找到合适的copyset的数量可以降低数据丢失的概率. 在分布式存 ...
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
- C#入门篇6-3:字符串操作 string的ToString() Split()和Copy()方法
//ToString()方法 public static void OutPut() { //字符型转换 转为字符串 Console.WriteLine(.ToString("n" ...
- MongoDB快速入门学习笔记5 MongoDB的文档修改操作
db.集合名称.update({query},{update},upsert, multi})query:过滤条件update:修改内容upsert:如果不存在查询条件查出的记录,是否插入一条数据,默 ...
- openpyxl模块介绍
openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档.其 ...
- 非常全面的vim配置文件
1.mac下vim全局配置目录 /usr/share/vim/vimrc 一般不对此文件做修改,在用户目录下创建自定义配置,目录为: /Users/xxxxx cd ~ 2自定义vim配置 配置功能: ...