nyoj_524_A-B Problem_201312012035
A-B Problem
- 描述
-
A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。
现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢?
- 输入
- 有多组测试数据。每组数据包括两行,分别代表A和B。 它们的位数小于100,且每个数字前中可能包含+,- 号。 每个数字前面和后面都可能有多余的0。 每组测试数据后有一空行。
- 输出
- 对于每组数据,输出一行。 如果A-B=0,输出YES,否则输出NO。
- 样例输入
-
1
1 1.0
2.0 - 样例输出
-
YES
NO - 来源
- hdu改编
#include <stdio.h>
#include <string.h>
#define MAX 100000 char str1[MAX+],str2[MAX+];
int a1[MAX+],a2[MAX+],b1[MAX+],b2[MAX+]; int bijiao(char *str1,char *str2)
{
int len1,len2;
int i,j,k,t;
for(i=;i<MAX+;i++)
a1[i]=a2[i]=b1[i]=b2[i]=;
len1=strlen(str1);
for(i=;i<len1;i++)
if(str1[i]=='.')
{t=i;break;}
if(i>=len1)
t=len1;
for(j=,i=t-;i>=;i--)
a1[j++]=str1[i]-'';
for(j=,i=t+;i<len1;i++)
a2[j++]=str1[i]-'';
len2=strlen(str2);
for(i=;i<len2;i++)
if(str2[i]=='.')
{t=i;break;}
if(i>=len2)
t=len2;
for(j=,i=t-;i>=;i--)
b1[j++]=str2[i]-'';
for(j=,i=t+;i<len2;i++)
b2[j++]=str2[i]-'';
if(len1==&&len2==)
return ;
for(i=;i<MAX;i++)
{
if(a1[i]!=||a2[i]!=||b1[i]!=||b2[i]!=)
break;
}
if(i>=MAX)
return ;
for(i=;i<MAX;i++)
{
if(a1[i]!=b1[i])
{
k=;
break;
}
}
if(i>=MAX)
{
for(i=;i<MAX;i++)
{
if(a2[i]!=b2[i])
{
k=;
break;
}
}
if(i>=MAX)
k=;
}
return k;
//puts(str1);
//puts(str2);
}
int main()
{
while(scanf("%s%s",str1,str2)!=EOF)
{
int t=,k;
//gets(str2);
//getchar();
if((str1[]>=''&&str1[]<='')&&(str2[]>=''&&str2[]<=''))
k=bijiao(str1,str2);
else if((str1[]>=''&&str1[]<='')&&(str2[]=='+'))
k=bijiao(str1,str2+);
else if((str2[]>=''&&str2[]<='')&&(str1[]=='+'))
k=bijiao(str1+,str2);
else if(str1[]==str2[])
k=bijiao(str1+,str2+);
else if(str1[]=='.'||str2[]=='.')
k=bijiao(str1,str2);
else
{
t=bijiao(str1+,str2+);
if(t==)
k=;
else
k=;
}
if(k)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
//没考虑 (.1和 0.1)这组数据
/* 测试数据
0 -0
0 +0
123.123 +00123.12300
100.00 100
.1 0.1
000.000 0
123456789123456789
123456789123456789
1 1
000001000. 1000
+0 -000.000
.0 0
.0 0.
结果全是YES
这些测试数据如果过了基本差不多可以AC了 这都是WA出来的。。。。 */
和hdu2054类似,这题的测试数据更严格
nyoj_524_A-B Problem_201312012035的更多相关文章
随机推荐
- 湖南集训Day1
难度 不断网:☆☆☆ 断网:☆☆☆☆ /* 卡特兰数取模 由于数据范围小,直接做. 考试时断网.忘记卡特兰数公式,推错了只有5分. 数学公式要记别每次都现用现搜!!! */ #include<i ...
- Java数组去重(利用数组,不借助集合)
今天有个同学问我说老师,Java里边数组怎么去重,在不借助List集合的情况下,最后呢我整理了一下,打算发一篇博文,希望能帮助到有用的人,大佬绕过 public static void arrUniq ...
- win10 激活方法 (各版本)
很多人都在找Win10专业版永久密钥,其实win10激活码不管版本新旧都是通用的,也就是说一个win10专业版key,可以同时激活windows10专业版1809.1803.1709.1703.160 ...
- 【知识总结】线性筛_杜教筛_Min25筛
首先感谢又强又嘴又可爱脸还筋道的国家集训队(Upd: WC2019 进候选队,CTS2019 不幸 rk6 退队)神仙瓜 ( jumpmelon ) 给我讲解这三种筛法~~ 由于博主的鸽子属性,这篇博 ...
- JAVA中list,set,map与数组之间的转换详解
package test; import java.util.*; /** * Created by ming */ public class Test { public static void ma ...
- Java系列学习(十二)-开始Eclipse
1.用Eclipse来写一个HelloWorld (1)选择工作空间 工作空间其实就是我们写的源代码所在的目录 (2)创建一个Java项目 [File-New-Java Project] (3)创建包 ...
- [ AHOI 2008 ] Meet
\(\\\) \(Description\) 一棵\(N\)个节点的树,每条边权都为\(1\). \(M\)组询问,每次给出三个点\(A_i,B_i,C_i\),求从三个点分别出发,移动到同一个点的路 ...
- jsp之认识 servlet (基础、工作原理、容器请求处理)
Tomcat 的安装: eclipse 需要自行安装tomcat,这是web 项目运行的服务器.如果用的是MyEclipse,里面自带tomcat,方便清除部署垃圾,利于项目运行. Tomcat的安装 ...
- 在mac上快捷找到nodejs的安装路径
打开控制台输入 which node ,得到的输出结果就是node安装路径
- 【技术累积】【点】【java】【28】Map遍历
Map遍历 map的遍历一般有几种吧 遍历entrySet for(Map.Entry<String,String> entry : map.entrySet()){ } Iterator ...