#33946: C++ 解題思路(修改版)


kk20180820@gmail.com (Wayne Yang)

學校 : 國立鳳山高級中學
編號 : 172018
來源 : [49.159.254.231]
最後登入時間 :
2024-03-16 17:31:07
d584. 技能點數skill -- jack1 | From: [49.159.254.231] | 發表日期 : 2023-02-17 00:29

#include<iostream>
using namespace std;

int ss(int n,int m,int ex)     //使用副程式來解決等級範圍問題 n是職業,m是等級,ex是該職業第一次轉職時機的等級
{
    int sum=0;

    if(m>=ex && n != 0)   //既然不是初心者,必定已經經過第一次轉職,所以直接給一點
    {
        sum++;
        if(m>=30)                //檢查是否已經二轉
        {
            sum++;
            if(m>=70)            //檢查是否已經三轉
            {
                sum++;
                if(m>=120)      //檢查是否已經四轉
                {
                    sum += 3;
                }
            }
        }

        sum += (m-ex)*3;    //我們知道在到達一定等級的時候才會額外增加 一點點 點數,所以其他部分必定是自己肝來的
        return sum;              //即每一等皆能獲得的3點點數,目前等級去減掉ex的等級,因為剛達到ex等級的時候,

                                        //自己還是初心者,所以沒有獲得到達ex等級的時候的點數
    }else{

        return 0;                  //既然n職業是初心者,那就直接回傳0吧
    }

}
//////////////////////////
int main(void)
{
    int n,m;
    while(cin>>n>>m)
    {
        
        int ans;

        if(n == 2)
        {
            ans = ss(n,m,8);    //法師轉職等級8
        }else
        {
            ans = ss(n,m,10);  //除初心者、法師外,其他職業轉職等級10
        }
        cout<<ans<<'\n';

    }


    return 0;                      //友善電腦 ouob
}

 
ZeroJudge Forum