您的位置:首页 > 其它

E - A == B ? HDU - 2054

2017-07-22 21:37 197 查看


E - A == B ? HDU - 2054

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 
估计OJ有问题
 

话说 
+0 -0
输出
NO
AC我信了但竟然+1和1.0~N0竟然AC了竟然AC了; 

啊西巴贼烦,下面有WA版改进了添加
+-
号的问题大神帮帮找找BUG。 
这时AC版


#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char a[100000],b[100000];
void change(char s[])
{
int i,len;
len  = strlen(s);
if(strstr(s,"."))
{
for(i = len-1; s[i] == '0'; i--)
{
s[i] = '\0';
len--;
}
}
if(s[len-1] == '.')
s[len-1] = '\0';
}

int main()
{

while(cin>>a>>b)
{
change(a);
change(b);
if(strcmp(a,b))
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}


//这是WA版
本来以为只有正整数没想到还有正负之分所以没包装函数,o(︶︿︶)o 唉后面有时间再修改。各位凑合看,见笑了……

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char a[100000],b[100000];
void change(char s[])
{
int i,len;
len  = strlen(s);
if(strstr(s,"."))
{
for(i = len-1; s[i] == '0'; i--)
{
s[i] = '\0';
len--;
}
}
if(s[len-1] == '.')
s[len-1] = '\0';
}

int main()
{

while(cin>>a>>b)
{
change(a);
change(b);
if(strcmp(a,b))
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}
#include <iostream>
#include <string>
#include <assert.h>

using namespace std;
const int maxn = 50000;
char a[maxn];
char b[maxn];

bool Pd(char* a, char* b)
{
assert(a != NULL && b!= NULL);
if (a[0] != '-' && b[0] != '-'){
if (a[0] == '+'){
a[0] = '0';
}
if (b[0] == '+'){
b[0] = '0';
}
return true;
}
else if (a[0] == '-'){
if (b[0] != '-'){
for (int i = 0; i < strlen(b); ++i){
if (b[i] != '0' && b[i] != '.'&& b[i] != '+')
return false;
}
a[0] = '0';
return true;
}
else if(b[0] == '-')
{
a[0] = 0;
b[0] = 0;
return true;
}
}
else
{
for (int i = 0; i < strlen(a);++i){
if (a[i] != '0' && a[i] != '.')
return false;
}
b[0] = '0';
return true;
}
}

int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while (scanf("%s%s",a,b) != EOF){
if (!Pd(a,b))
printf("NO\n");
else{
int al = strlen(a);
int bl = strlen(b);
char* sb = strstr(b,".");
char* sa = strstr(a,".");
int sal = 0;
int sbl = 0;
if (sa)
sal = strlen(sa);
if (sb)
sbl = strlen(sb);
string stra;
string strb;
for (int i = 0; i < al - sal; i++){
if (a[i] != '0'){
stra.push_back(a[i]);
}
}
for (int i = 0; i < bl - sbl; ++i){
if (b[i] != '0'){
strb.push_back(b[i]);
}
}
if (stra != strb)
printf("NO\n");
else{
if (sa && sb)
{
string ssa;
string ssb;
int flag = 0;
for (int i = sal-1; i > 0; --i)
{
if (sa[i] != '0' || flag){
flag = 1;
ssa.push_back(sa[i]);
}
}
flag = 0;
for (int i = sbl-1; i > 0; --i){
if (sb[i] != '0' || flag){
flag = 1;
ssb.push_back(sb[i]);
}
}
if (ssa != ssb){
printf("NO\n");
}
}
else if (sa || sb)
{
if (sa){
for (int i = 1; i < sal; ++i){
if (sa[i] != '0'){
printf("NO\n");
break;
}
}
}
else{
for (int i = 1; i < sbl; ++i){
if (sb[i] != '0'){
printf("NO\n");
break;
}
}
}
}
printf("YES\n");
}
}
}
return 0;
}


//有通不过的例子记得发送一下,我自己调调!
blbagony@163.com
 

//搞了一下午真的是心痛
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: