但是如果某些東西運用得當,可以省下不少功夫,在此,我就說說我的簡易作法給各位參考
首先,題目的麻煩之處,在於小數點以下可能會超出double範圍,所以就得用類似大數的處理方法,而我的方法是先當作c++型字串的string 輸入再處理,以下是我的處理方法
1.利用stringstream轉成浮點數先來大略判定大小
2.要是無法分出大小,可知double可儲存的範圍內,必定相同,所以整數部分必相同,整數位數亦然
所以從頭開始比較大小即可,而題目說兩數不會相同,所以無須判定相同情況
因此,就有以下的code
p.s. stringstream的清除 一定要ss.clear();和ss.str(""); 缺一不可
p.s. stringstream的清除 一定要ss.clear();和ss.str(""); 缺一不可
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
stringstream ss;
int main(){
while(cin>>s1>>s2){
int d1,d2;
ss<<s1;
ss>>d1;
ss.clear();
ss.str("");
ss<<s2;
ss>>d2;
if(d1>d2)
cout<<s1<<'\n';
else if(d2>d1)
cout<<s2<<'\n';
else{
for(int j=0;;j++){
if(s1[j]>s2[j]){
cout<<s1<<'\n';
break;
}
else if(s2[j]>s1[j]){
cout<<s2<<'\n';
break;
}
}
}
}
}