HDU2054(大数的处理)
发布时间:2020-12-14 04:14:01 所属栏目:大数据 来源:网络整理
导读:这一题很有意思,没有用到任何的算法,主要需要考虑各种情况。如两个数的范围长度可能在10000位以上,另外使用字符串存储时需要注意不能直接判断两个字符串是否相等,因为题目没说两个数是不是整数,如两个数分别是10.0与10.00如果直接比较两个字符串是否相
这一题很有意思,没有用到任何的算法,主要需要考虑各种情况。如两个数的范围长度可能在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("YESn"); } else{ printf("NOn"); } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |