NYOJ 524 A-B Problem(大数是否相等)
发布时间:2020-12-14 02:32:52 所属栏目:大数据 来源:网络整理
导读:A-B Problem 时间限制: 1000 ms ?|??????????? 内存限制: 65535 KB 难度: 3 描述 A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。 现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢? 输入 有多组测试数据。每组数
A-B Problem
时间限制:
1000 ms ?|??????????? 内存限制:
65535 KB
难度:
3
? ? 题目与HDOJ的2054? A == B ? 题十分相似,但增加了对前导零的判断,及对正负数的判断,测试数据也比较严格。WA了七遍,终于AC了。 ? 自己写的特殊测试数据:-0000.0000????? 0?????????????????????? +0.000???? -0.00??????????????????? 2000.00??? 2000????????????? -2000.00?????? 2000.00 ? 100000.00100?????? 100000.01000??????????? -1000.0???? -1000.00??????????????????????-00000.01???????? -.1??????????????? +.1????? 00000.01 ? +.1????? 0.1 ? 具体题解及代码如下: ? #include<stdio.h> #include<string.h> char str1[110],str2[110]; void count(char str[])//此函数对两个字符串进行第一步处理 { int len,i; len=strlen(str); if(strchr(str,'.'))//后导零和没有具体小数位的小数点 { for(i=len-1;str[i]=='0';i--) str[i]=' '; if(str[i]=='.') str[i]=' '; } if(str[0]=='0'||str[0]=='+')//去除正号和前导零 { while(str[0]=='0'||str[0]=='+') { for(i=0;i<len;i++) str[i]=str[i+1]; str[len-1]=' '; len--; } } } void count2(char str[])//在一个数为零或者两个数都是负数的时候去除负号及前导零 { int len,i; len=strlen(str); while(str[0]=='0'||str[0]=='-') { for(i=0;i<len;i++) str[i]=str[i+1]; str[len-1]=' '; len--; } } int main() { while(scanf("%s%s",str1,str2)!=EOF) { count(str1); count(str2); if(str1[0]!='-'||str2[0]!='-')//一正一负或者两个数都为正的情况 { if(strcmp(str1," ")==0||strcmp(str2," ")==0)//其中一个数为零的情况,看带负号的数是否值也为零 { count2(str1);//***** count2(str2); if(strcmp(str1,str2)) printf("NOn"); else printf("YESn"); } else//没有出现值为零的情况 { if(strcmp(str1,str2)) printf("NOn"); else printf("YESn"); } } else//两个都是负数的情况 { count2(str1);//***** count2(str2); if(strcmp(str1,str2)) printf("NOn"); else printf("YESn"); } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |