A == B ?



Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 64243    Accepted Submission(s): 10061

Problem Description

Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".

 

Input

each test case contains two numbers A and B.

 

Output

for each case, if A is equal to B, you should print "YES", or print "NO".

 

Sample Input

1 2

2 2

3 3

4 3

 

Sample Output

NO

YES

YES

NO

题目大意:给你两个数A和B,推断A和B是否相等,若相等输出"YES"。

否则输出"NO"。

思路:题目没有给出A、B的数据规模,这里就是个大数题。把A、B用

字符数组存起来。标记A、B的正负号,若为正,则标记为1,若为负。

则标记为0。将字符数组内的'-'赋值为'0',然后将整数前的零和小数部分

后边的零清除,然后用数组将整数部分和小数部分分别存起来。之后分别

比較A、B的整数部分和小数部分是否相等。注意A、B可能为整数或是小

数,尤其注意A、B可能会在整数部分前边有N个零或者小数部分后边有N

个零,比方00012、123.123000、0.00、012.200等等。详细解题过程

看以下代码。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char A[20020],B[20020];
char a[20020],aa[20020],b[20020],bb[20020];
int main()
{
int flagA,flagB,lenA,lenB,markA,markB;
while(~scanf("%s%s",A,B))
{
memset(a,0,sizeof(a));//存A的整数部分
memset(b,0,sizeof(b));//存B的整数部分
memset(aa,0,sizeof(aa));//存A的小数部分
memset(bb,0,sizeof(bb));//存B的小数部分
flagA = flagB = 1;//标记正负数,1为整数,0为负数
markA = markB = 0;//标记小数点,1为有小数点,0为没有小数点 if(A[0] == '-')//标记并清除A、B的正负号
{
flagA = 0;
A[0] = '0';
}
if(B[0] == '-')
{
flagB = 0;
B[0] = '0';
} lenA = strlen(A);
lenB = strlen(B);
int numa = 0,i; for(i = 0; i < lenA; i++)//清除A的整数部分前面的零
if(A[i]!='0')
break;
if(i==lenA || A[i]=='.')//若整数部分全为0,则数组a为"0"
a[0] = '0';
for(; i < lenA; i++)//用数组a记录A的整数部分
{
if(A[i]!='.')
a[numa++] = A[i];
else
{
markA = 1;
break;
}
}
int j,numaa = 0;
for(j = lenA-1;j > i; j--)//清除A小数部分后边的零
if(A[j]!='0')
break;
if(j == i)//若小数部分全为0,则数组aa为"0"
aa[0] = '0';
for(;j > i; j--)//用数组aa记录A的小数部分
{
aa[numaa++] = A[j];
}
//B和A的处理一样
int k,l;
for(k = 0; k < lenB; k++)
if(B[k]!='0')
break;
if(k == lenB || B[k]=='.')
b[0] ='0';
int numb = 0;
for(; k < lenB; k++)
{
if(B[k]!='.')
b[numb++] = B[k];
else
{
markB = 1;
break;
} } int numbb = 0;
for(l = lenB-1;l > k; l--)
if(B[l]!='0')
break;
if(l==k)
bb[0]='0';
for(;l > k; l--)
{
bb[numbb++] = B[l];
} if(markA == 0)
aa[0] = '0';
if(markB == 0)
bb[0] = '0';
if(flagA==flagB && strcmp(a,b)==0 && strcmp(aa,bb)==0)//推断A、B是否相等
printf("YES\n");
else
printf("NO\n");
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
} return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

HDU2054_A == B ?【模拟题】【大数】【水的问题】的更多相关文章

  1. Leetcode 8. String to Integer (atoi)(模拟题,水)

    8. String to Integer (atoi) Medium Implement atoi which converts a string to an integer. The functio ...

  2. HDU-1042-N!(Java大法好 &amp;&amp; HDU大数水题)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  3. POJ 2506 Tiling dp+大数 水题

    大致题意:现有两种方块(1X2,2X2),方块数量无限制.问用这两种方块填满2Xn的矩阵的填法有多少种. 分析:通俗点说,找规律.专业化一点,动态规划. 状态d[i],表示宽度为i的填法个数. 状态转 ...

  4. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  5. 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题

    这篇文章来介绍一些模拟题,即一类按照题目要求将现实的操作转换成程序语言. zoj1003: On every June 1st, the Children's Day, there will be a ...

  6. POJ 模拟题集合

    http://www.cppblog.com/Uriel/articles/101592.html 感觉这个暑假没有去年有激情啊,,,还没到状态就已经块上学了,,, 真是弱暴了,,,找几道模拟题刷刷. ...

  7. NOIP2010-普及组复赛-第二题-接水问题

    题目描述 Description 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1.  现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些 ...

  8. hdu_1034(模拟题)

    很久没有打模拟题了,再次总结一下模拟题的做法: 仔细分析题意,弄清楚过程 理清楚模拟步骤,严格按照步骤编写代码 添加中间输出测试每步结果 虽然这是一个很简单的水题,但是没有松哥帮忙还是卡了很久,因为没 ...

  9. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  10. Codeforces Gym 100269B Ballot Analyzing Device 模拟题

    Ballot Analyzing Device 题目连接: http://codeforces.com/gym/100269/attachments Description Election comm ...

随机推荐

  1. PSPInstance Object | Web Python

    PSPInstance Object | Web Python The PSPInstance object is available to all PSP pages through the psp ...

  2. 自定义View的封装

    通过上一个博文的自定义View的编写后,发现代码其实挺复杂的,所有这里通过对代码进一步的优化,即用到了java的一个重要的特点:封装.通过对父类的方法进行封装,然后在子类继承后实现相应的函数即可,达到 ...

  3. 性能优化之Hibernate缓存讲解、应用和调优

    JavaMelody——一款性能监控.调优工具, 通过它让我觉得项目优化是看得见摸得着的,优化有了针对性.而无论是对于分布式,还是非分布,缓存是提示性能的有效工具. 数据层是EJB3.0实现的,而EJ ...

  4. python中使用mahotas包实现高斯模糊

    高斯模糊 import mahotas as mh import numpy as np from matplotlib import pyplot as plt image=mh.imread('i ...

  5. Java凝视Annotation

     Java凝视Annotation 从JDK 5開始,Java添加了对元数据(MetaData)的支持,也就是Annotation(凝视).Annotation提供了一种为程序元素设置元数据的方法 ...

  6. H5 视频直播相关技术

    一.移动视频直播发展 大家首先来看下面这张图: 可以看到,直播从 PC 到一直发展到移动端,越来越多的直播类 App 上线,同时移动直播进入了前所未有的爆发阶段,但是对于大多数移动直播来说,还是要以 ...

  7. squid服务搭建

    Squid配置1. 什么是squidsquid可以做代理也可以做缓存squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O.  squid不仅可以做正向代理,又可以做反向代理. 正向代 ...

  8. a:hover span 隐藏/显示 问题

    :hover是我们在CSS设计中最常运用的伪类之一,许多绚丽效果的实现离不开伪类:hover,比如我们常见的纯CSS菜单.相册效果等等. 或许用了这么久的伪类:hover,还有部分朋友还不完全了解ho ...

  9. Android测试框架2(非原创)

    package com.example.sqlitedatabase.test; import android.content.ContentValues;import android.databas ...

  10. java学习——函数

    class FunctionDemo { public static void main(String[] args) { System.out.println("Hello World!& ...