반응형
A. Tennis Tournament
문제
https://codeforces.com/contest/628/problem/A
문제요약
토너먼트식 경기를 한다. 사람 수가 n일 때 k=2^i<=n을 만족하는 가장 큰 k에 대해 n-k명의 사람을 제외하고 k명에 대해 k/2의 경기를 하여 k/2사람 및 제외된 n-k명의 사람을 다음 라운드로 진출시키는 것을 반복하여 결승까지 진행한다.
풀이
반복문을 통해 위 계산을 n이 2가 될 때 까지 해준다.
각 반복에서 경기 수를 확인하여 경기수 X (1 + 2b) 개의 물병을 누적한다.
타올의 경우 전체 참가자수 X p개이다.
소스코드
#include <stdio.h>
typedef long long ll;
int main(){
int n, b, p, k, B=0;
scanf("%d%d%d",&n,&b,&p);
p*=n;
b=b*2+1;
for(;n>1;n-=k>>1){
for(k=2; k<<1<=n; k<<=1);
B+=b*(k>>1);
}
printf("%d %d",B,p);
}
반응형
'PS > Educational Codeforces' 카테고리의 다른 글
Educational Codeforces Round 010 A. Gabriel and Caterpillar (0) | 2021.07.06 |
---|---|
Educational Codeforces Round 009. A (0) | 2021.07.06 |
Educational Codeforces Round 007. A (0) | 2021.07.02 |
Educational Codeforces Round 006. A (0) | 2021.07.02 |
Educational Codeforces Round 005. A (0) | 2021.07.02 |