程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU2054(大數的處理)

HDU2054(大數的處理)

編輯:C++入門知識

這一題很有意思,沒有用到任何的算法,主要需要考慮各種情況。如兩個數的范圍長度可能在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;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved