SW Expert Academy // 11387

2021. 2. 1. 16:27Programming/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