HDU-2054 A==B?
#include<stdio.h>
#include<string.h>
char n[100000], m[100000];
int main()
{
int i, j, len_n, len_m, flag, len_last, len_late,doc, q, p, count, start;
char ch;
while(1)
{
memset(n, 0, sizeof(n));
memset(m, 0, sizeof(m));
flag = i = j = doc = count = start = 0;
while(1)
{
if(scanf("%c", &ch) == EOF) return 0;
if(ch == '\n' && start == 1) break;
else if(ch != ' ' && ch != '\n' && flag == 0)
{
n[i++] = ch;
}
else if(ch == ' ' || ch == '\n')
{
flag = 1;
start = 1;
}
else m[j++] = ch;
}
len_n = strlen(n);
len_m = strlen(m);
if((n[0] == '-' && m[0] != '-') || (n[0] != '-' && m[0] == '-'))
{
printf("NO\n");
continue;
}
for(i = n[0] != '-'? 0:1; i<len_n && n[i] - '0'== 0; i++);
for(j = m[0] != '-'? 0:1; j<len_m && m[j] - '0'== 0; j++);
len_n -= i;
len_m -= j;
len_last = len_n < len_m? len_n:len_m;
len_late = len_n + len_m - len_last;
{
for(; count < len_last; i++, j++, count++)
if(n[i] - '0' != m[j] - '0') break;
else if(n[i] == '.') doc = 1;
if(count >= len_late)
{
printf("YES\n");
}
else
{
if(len_n > len_m)
{
if(doc != 1 && n[i] != '.') printf("NO\n");
else
{
for(i = n[i] == '.'? i+1: i; i<strlen(n); i++)
if(n[i] - '0' != 0 ) break;
if(i>=len_n) printf("YES\n");
else printf("NO\n");
}
}
else if(len_n < len_m)
{
if(doc != 1 && m[j] != '.') printf("NO\n");
else
{
for(j = m[j] == '.'? j+1: j; j<strlen(m); j++)
if(m[j] - '0' != 0 ) break;
if(j>=len_m) printf("YES\n");
else printf("NO\n");
}
}
else if(len_n == len_m) printf("NO\n");
}
}
}
return 0;
}
1.考虑数字前面的0
2.考虑小数点后的0
3.考虑大数字
HDU-2054 A==B?的更多相关文章
- HDU 2054 A == B ?(找小数点)
题目链接:pid=2054" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=2054 Prob ...
- hdu 2054
Ps:WA了无数次,,简直成了心病..今天终于AC了..先取整数部分,去零,判断位数相等否,再比较.如果相等,再取小数部分,去零,比较,输出....好烦... 代码; #include "s ...
- hdu 2054 A == B ? (java)
问题: 考虑问题不周到.没有考虑到可能是小数并且存在 1.0=1.01=1的情况. 本题使用了BigDecimal类,此类适用于高精度的数此时攻克了小数和01=1的问题, 该类比較方式中n.equal ...
- HDU 2054 又见GCD
又见GCD Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2054 A==B? 大数
Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES&quo ...
- JAVA大数几算--HDU 2054 A == B ?
Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES&quo ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- [转] HDU 题目分类
转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...
- HDU ACM 题目分类
模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
随机推荐
- [Locked] Number of Connected Components in an Undirected Graph
Number of Connected Components in an Undirected Graph Given n nodes labeled from 0 to n - 1 and a li ...
- 约瑟夫环问题-Java数组解决
约瑟夫环问题说的是,n个人围成一圈,从第k个人开始沿着一个方向报数,报到第m个人时,第m个人出列,从紧挨着的下一个人(未出列)开始,求整个环中人的出列顺序.下面是我用java实现的解决方法. clas ...
- [转载]软件测试之Web测试经典总结
转载自:软件测试之Web测试经典总结 基于Web的系统测试在基于Web的系统开发中,如果缺乏严格的过程,我们在开发.发布.实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大.而且, ...
- poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】
Period Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 14653 Accepted: 6965 Descripti ...
- 排序算法 Java实现版
8种排序之间的关系: 1. 直接插入排序 (1)基本思想: 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序 ...
- string和stringbuffer stringbuilder的快速理解。
这三个对象都可操作字符串,区别string定义的变量除非重新赋值,否则是不可改变的.调用string的方法不会改变,但是其他两个有对象的方法可改变,比如apend的方法,后两个区别一个是线程安全不安全 ...
- throw与throw的区别
Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception . Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的 ...
- Json序列化、反序列化互换
// 序列化 using (MemoryStream stream = new MemoryStream()) { serializer.WriteObject(stream, hdm); jsonT ...
- dubbo(soa分布式)与cobar(mysql分布式)
http://www.jianshu.com/p/0dde591f21d0 (Dubbo编译不是个顺利的事) Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好 ...
- Mono For Android离线激活
我们之前创建过Mono For Android的开发环境,但是使用一段时间后就说明证书过期,那如何破解呢? 但我说的这个也就只能使用免费的证书. 首先下载免费的证书,monoandroid.licx, ...