日期:2025年9月4日
ZeroJudge 題目連結:d584. 技能點數skill
解題想法
依照職業及當時的等級更新技能點數即可。
Python 程式碼
使用時間約為 20 ms,記憶體約為 3.4 MB,通過測試。
import sys
result = []
lines = sys.stdin.readlines()
for line in lines:
job, level = map(int, line.split())
tot = 0
if job == 2 and level >= 8: # 如果是法師,8 級一轉
tot += 1 + (level-8)*3 # 點數加上轉職的 1 及每升一級加的 3 點
elif (job == 1 or job == 3 or job == 4) and level >= 10: # 如果是劍士、弓箭手、盜賊,10 級一轉
tot += 1 + (level-10)*3 # 點數加上轉職的 1 及每升一級加的 3 點
if job != 0 and level >= 30: tot += 1 # 如果不是初心者,30 級二轉,點數加 1
if job != 0 and level >= 70: tot += 1 # 如果不是初心者,70 級三轉,點數加 1
if job != 0 and level >= 120: tot += 3 # 如果不是初心者,120 級四轉,點數加 3
result.append(f"{tot:d}\n")
sys.stdout.write("".join(result))
C++ 程式碼
使用時間約為 2 ms,記憶體約為 92 kB,通過測試。
#include <cstdio>
using namespace std;
int main() {
int job, level;
while(scanf("%d %d", &job, &level) != EOF) {
int tot = 0;
if (job == 2 && level >= 8) { // 如果是法師,8 級一轉
tot += 1 + (level-8)*3; // 點數加上轉職的 1 及每升一級加的 3 點
} else if ((job == 1 || job == 3 || job == 4) && level >= 10) { // 如果是劍士、弓箭手、盜賊,10 級一轉
tot += 1 + (level-10)*3; // 點數加上轉職的 1 及每升一級加的 3 點
}
if (job != 0 && level >= 30) tot++; // 如果不是初心者,30 級二轉,點數加 1
if (job != 0 && level >= 70) tot++; // 如果不是初心者,70 級三轉,點數加 1
if (job != 0 && level >= 120) tot += 3; // 如果不是初心者,120 級四轉,點數加 3
printf("%d\n", tot);
}
return 0;
}
沒有留言:
張貼留言