A - アルバイトの給料計算 / Calculating Part-Time Job Pay Editorial by admin
GPT 5.4 High概要
各アルバイトについて「時給 \(\times\) 働いた時間」を計算し、それらをすべて足し合わせれば今月の給料の合計が求まります。
考察
\(i\) 番目のアルバイトで受け取る金額は、時給が \(A_i\) 円、労働時間が \(T_i\) 時間なので
\(A_i \times T_i\)
円です。
したがって、求めたい答えは
\(A_1T_1 + A_2T_2 + \cdots + A_NT_N\)
です。
例えば、
- アルバイト1: 時給 \(1000\) 円、\(3\) 時間 → \(3000\) 円
- アルバイト2: 時給 \(1200\) 円、\(2\) 時間 → \(2400\) 円
なら、合計は \(3000 + 2400 = 5400\) 円です。
素朴な考え方
「1時間ごとに時給を足していく」という方法も考えられます。
しかし、\(T_i\) は最大 \(10^6\) で、アルバイトの種類数 \(N\) は最大 \(10^5\) なので、時間ごとに処理すると非常に無駄です。
実際には、1つのアルバイトについてまとめて \(A_i \times T_i\) を計算すればよいので、各アルバイトを1回ずつ見るだけで十分です。
アルゴリズム
- \(N\) を入力する。
- 合計金額を表す変数
totalを \(0\) で初期化する。 - 各アルバイトについて、時給 \(A_i\) と労働時間 \(T_i\) を入力する。
total += A_i * T_iを行う。- 最後に
totalを出力する。
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(1)\)
実装のポイント
各行を読んで、その場で
a * tを合計に加えればよく、配列に保存する必要はありません。合計金額は最大でおおよそ \(10^5 \times 10^6 \times 10^6 = 10^{17}\) になる可能性があります。Python の整数型なら問題なく扱えます。
提示コードでは
sys.stdin.buffer.readlineを使って高速に入力していますが、この問題では本質は「積を足し合わせる」ことです。ソースコード
import sys
def main():
input = sys.stdin.buffer.readline
N = int(input())
total = 0
for _ in range(N):
a, t = map(int, input().split())
total += a * t
print(total)
if __name__ == "__main__":
main()
この解説は gpt-5.4-high によって生成されました。
posted:
last update: