SW Expert Academy // 11387
2021. 2. 1. 16:27ㆍProgramming/SW Expert Academy
SW Expert Academy 11387번 "몬스터 사냥" 문제입니다.
TC = int(input())
for tc in range(1, TC+1):
D, L, N = map(int, input().split())
print("#%d %d"%(tc, (N*D + D*L*N*(N-1) / 200)))
지금까지 n번의 공격을 하였을 때 다음의 공격은 D * (1 + n * L / 100) 이 된다고 하였을 때 총 공격의 누적을 구하는 문제다.
위의 식을 전개하면 D + D * n * L / 100 이므로 공격당 고정적으로 D의 공격이 들어가는데 그것이 N만큼 공격을 실행한다.
따라서 N * D가 공격 누적에 기본으로 들어가있다.
다음 뒷부분은 D * n * L / 100이다. 이는 처음부터 차례대로 써보면
0, 1*D*L/100, 2*D*L/100, ... , (N-1) * D * L / 100 처럼 된다.
즉 D * L / 100은 고정적으로 연산이 되고 나머지는 1, 2, 3, 4 ... , N-2, N-1로 되므로 1부터 N-1까지의 합에 D*L/100을 곱하면 된다.
1부터 N-1까지의 합은 N * (N - 1) / 2 이므로 총 공격 누적은
N * D + D * L * N * (N - 1) / 200 이다.
'Programming > SW Expert Academy' 카테고리의 다른 글
SW Expert Academy // 3376 (0) | 2021.01.28 |
---|---|
SW Expert Academy // 3408 (0) | 2021.01.27 |
SW Expert Academy // 3431 (0) | 2021.01.27 |
SW Expert Academy // 3499 (0) | 2021.01.26 |
SW Expert Academy // 3750 (0) | 2021.01.26 |