https://codeforces.com/contest/1539/problem/A
시간 1초, 메모리 256MB
input :
output :
조건 :
n
people participating in some contest, they start participating in x
minutes intervals
n명이 참여하는 대회에서 참가자들은 x분 간격으로 참여한다.
Duration of contest is t
minutes for each participant
각 참여자들에게 콘테스트 시간은 t분이 할당된다.
When a participant finishes the contest, their dissatisfaction equals to the number of participants that started the contest (or starting it now), but haven't yet finished it.
참가자가 콘테스트를 마쳤을 때 dissatisfaction은 현재 콘테스트에 참여하고 있는 인원 수와 동일하다.(아직 마치지 않은)
t // x를 통해 어떤 사람이 콘테스트에 참여했을 때 가장 큰 dissatisfaction을 얻는 경우를 알 수 있다. 나누어 떨어지는 경우도 포함이다. 이 경우에는 본인이 끝나는 시간에 인제 시작을 하는 사람이 존재하는 경우이다.
dissatisfaction을 얻는 경우는 2가지가 존재한다.
1. 인원이 충분히 많아서 t // x를 얻고 나서 짜투리를 추가적으로 계산해야 하는 경우
2. 짜투리만을 계산하는 경우
짜투리를 계산할 때는 등차 수열을 계산한다고 생각하면 된다. 어차피 뒤에 남아있는 인원의 수는 계속 감소하므로 n ~ 1까지의 합을 구하도록 하면 된다.
import sys
k = int(sys.stdin.readline())
data = []
for i in range(k):
n, x, t = map(int, sys.stdin.readline().split())
term = t // x
remain = n - term
if remain > 0:
print(remain * term + (term - 1) * term // 2)
else:
print(n * (n - 1) // 2)