HDU2054(大数的处理)
2013-03-21 11:24
176 查看
这一题很有意思,没有用到任何的算法,主要需要考虑各种情况。如两个数的范围长度可能在10000位以上,另外使用字符串存储时需要注意不能直接判断两个字符串是否相等,因为题目没说两个数是不是整数,如两个数分别是10.0与10.00如果直接比较两个字符串是否相等,就WA。有了上面的思路程序也就好实现了。
#include<stdio.h> #include<string> //字符串s中是否包含字符c bool Search(char s[],int n,char c){ for(int i=0;i<n;i++){ if(s[i]==c)return true; } return false; } //去除尾所有的0 int trim(char s[],int n){ for(int i=n-1;i>=0;i--){ if(s[i]=='0')n--; else break; } return n; } int main(){ char s1[100010],s2[100010]; while(scanf("%s%s",s1,s2)!=EOF){ int len1=strlen(s1); int len2=strlen(s2); //读取两个数,放入到数组中。 if(Search(s1,len1,'.')){ //如果数中包括小数点,如123.10则去除尾部的0便于处理 len1=trim(s1,len1); } if(Search(s2,len2,'.')){ len2=trim(s2,len2); } //要考虑10=10.的情况 if(s1[len1-1]=='.')len1--; if(s2[len2-1]=='.')len2--; int i=0; bool flag=true; if(len1!=len2){ //两个数的长度不一致,直接可以确定为不相等。 flag=false; } else{ while(i<len1){ if(s1[i]!=s2[i]){ flag=false; break; } i++; } } if(flag){ printf("YES\n"); } else{ printf("NO\n"); } } return 0; }
相关文章推荐
- 指针处理大数各种情况
- 一道PHP面试题 大数相加 溢出的处理
- [F] Teacher's Problem(处理大数时,优化很重要)
- HDU 1002 java处理大数太好用了
- 大数阶乘的处理
- Kahan's Summation Formula原理—它是如何处理大数吃小数的
- noip2009 细胞分裂 (质因数分解,处理大数间能否整除)
- Java中处理大数
- java之大数的处理
- 大数处理--大数相加减问题(c语言)
- “大数处理“
- JAVA的大数处理
- uva 1639 Candy 大数的对数处理 数学期望
- 处理大数
- JAVA大数处理(BigInteger,BigDecimal)
- 黑马程序员——java中对大数的处理
- C++ 大数处理
- JAVA大数处理(BigInteger,BigDecimal)
- LeetCode 415. Add Strings (大数加法,字符串处理)
- 对大数精度的处理(1)_大数阶乘