b898: 1. 畢氏定理

2022.11.19 PM 02:00 by CBJ

來源 : https://zerojudge.tw/ShowProblem?problemid=b898
出題者 : 2016高雄市資訊學科能力競賽複賽
標籤 : 大數運算、取max
難易度 : 1
解題想法 : 
這題其實就是數字比較大的d065,因此若是以C/C++解題的話,數字必須要用字串存,並自行定義比較函式,而Python的話則照d065的方式解題即可。

d065題解 : 
https://cbjsprogramdiary.com/2022/11/18/d065-%e4%b8%89%e4%ba%ba%e8%a1%8c%e5%bf%85%e6%9c%89%e6%88%91%e5%b8%ab/

比較函式實作 :
用字串存的數字a,b要如何比大小? 第一,看長度。
我們知道位數較多的數字會較大,所以假如a,b長度不同,則長度較長的會比較大,直接return。
若長度相同,則跑一個for i迴圈,每次比較a[i]和b[i]的大小,若a[i]較大則a較大,直接return a,反之則b[i]較大,直接return b,若一樣則繼續判斷直到有一組a[i],b[i]不相等為止(不會有a,b兩數完全相等的狀況發生)。
//C++ language
//solution link(含註解): 
#include<iostream>
#include<string>
using namespace std;
string str_max(string a,string b){
    if(a.length()==b.length()){
        for(int i=0;i<a.length();i++){
            if(a[i]>b[i]) return a;
            if(b[i]>a[i]) return b;
        }
    }
    if(a.length()>b.length()) return a;
    else return b;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        string a,b,c;
        cin>>a>>b>>c;
        string ans=str_max(a,str_max(b,c));
        cout<<ans<<"\n";
    }
    return 0;
}
## Python language
## solution link(含註解): 
n=int(input())
for i in range(n):
    print(max(*map(int,input().split())))

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *