HDU 2054 A == B ?
2012-02-20 15:15
357 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2054
题意:给两个数,判断这两个数是否相等。没有范围没有填写规则
代码:
这个是自己写的很长
这个是在网上找的:
分析:在网上找解题报告的时候看到有人把这题归类称库函数的熟练应用。
很无奈啊,网上找的那个看不懂啊,希望哪位路过的帮忙解释下!~
题意:给两个数,判断这两个数是否相等。没有范围没有填写规则
代码:
这个是自己写的很长
#include<stdio.h> #include<string.h> int main() { char s1[100000]; char s2[100000]; int t; int i,j; int l1,l2,r1,r2; while(scanf("%s %s",s1,s2)!=EOF) { /*判断正负号*/ if((s1[0]=='-' && s2[0]!='-' ) || (s1[0]!='-' && s2[0]=='-')) goto A; else { if(s1[0]=='+' || s1[0]=='-') s1[0]='0'; if(s2[0]=='+' || s2[0]=='-') s2[0]='0'; } /*如果有小数点则从后向前查找0,并记录第一个不为0的位子*/ l1 = strlen(s1)-1; l2 = strlen(s2)-1; if(strchr(s1,'.')) while(s1[l1]=='0') l1--; if(strchr(s2,'.')) while(s2[l2]=='0') l2--; if(s1[l1]=='.')l1--; if(s2[l2]=='.')l2--; /*从前向后查找0,并记录第一个不为0的位子*/ r1 = 0; r2 = 0; while(s1[r1]=='0') r1++; while(s2[r2]=='0') r2++; /*判断长度*/ if(l1-r1 != l2-r2) goto A; /*比较*/ i=r1; j=r2; t=1; for(; i<=l1&&j<=l2 ; i++,j++) if(s1[i]!=s2[j]) { t=0; break; } /*输出结果*/ if(t) printf("YES\n"); else A:printf("NO\n"); } return 0; }
这个是在网上找的:
#include <stdio.h> #include <string.h> void A(char *s) { int len = strlen(s); char *p = s + len - 1; if (strchr(s, '.')) while (*p == '0') *p-- = 0; if (*p == '.') *p = 0; } int main(void) { char *pa, *pb; char a[100024], b[100024]; while (scanf("%s%s", &a, &b) != EOF) { pa = a; pb = b; while (*pa == '0') pa++; while (*pb == '0') pb++; A(pa); A(pb); puts(strcmp(pa, pb) ? "NO" : "YES"); } return 0; }
分析:在网上找解题报告的时候看到有人把这题归类称库函数的熟练应用。
很无奈啊,网上找的那个看不懂啊,希望哪位路过的帮忙解释下!~
相关文章推荐
- HDU 2054 A == B ?
- HDU 2054 A == B?
- hdu 2054 A == B ?【JAVA】
- HDU 2054 A == B ? 字符串处理
- hdu 2054 A == B ?
- hdu_2054 (A==B?)
- hdu(2054)
- NYOJ 524 & HDU 2054 A==B?(模拟)
- HDU_2054——A=B问题
- HDU 2054 又见GCD
- HDU 2054 A==B?题解
- hdu 2054 A == B ?【JAVA】
- HDU 2054 A==B? 大数
- hdu 2054 A == B ? (java)
- HDU 2054 判断大数是否相等
- A == B ? HDU - 2054
- HDU 2054 A == B?
- HDU 2054
- HDU-2054 A==B?
- HDU 2054 A==B?