這一題很有意思,沒有用到任何的算法,主要需要考慮各種情況。如兩個數的范圍長度可能在10000位以上,另外使用字符串存儲時需要注意不能直接判斷兩個字符串是否相等,因為題目沒說兩個數是不是整數,如兩個數分別是10.0與10.00如果直接比較兩個字符串是否相等,就WA。有了上面的思路程序也就好實現了。 [cpp] #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; }