【CodeForces 628A】Tennis Tournament(水题)

来源:互联网 发布:protobuf 数组 编辑:程序博客网 时间:2024/06/15 07:48

Description

A tennis tournament with n participants is running. The participants are playing by an olympic system, so the winners move on and the losers drop out.

The tournament takes place in the following way (below, m is the number of the participants of the current round):

let k be the maximal power of the number 2 such that k ≤ m,
k participants compete in the current round and a half of them passes to the next round, the other m - k participants pass to the next round directly,
when only one participant remains, the tournament finishes.
Each match requires b bottles of water for each participant and one bottle for the judge. Besides p towels are given to each participant for the whole tournament.

Find the number of bottles and towels needed for the tournament.

Note that it’s a tennis tournament so in each match two participants compete (one of them will win and the other will lose).

Input

The only line contains three integers n, b, p (1 ≤ n, b, p ≤ 500) — the number of participants and the parameters described in the problem statement.

Output

Print two integers x and y — the number of bottles and towels need for the tournament.

Sample Input

Input

5 2 3

Output

20 15

Input

8 2 4

Output

35 32

Hint

In the first example will be three rounds:

in the first round will be two matches and for each match 5 bottles of water are needed (two for each of the participants and one for the judge),
in the second round will be only one match, so we need another 5 bottles of water,
in the third round will also be only one match, so we need another 5 bottles of water.
So in total we need 20 bottles of water.

In the second example no participant will move on to some round directly.

题目大意

有n个参赛队员,每次选择k(k<=m其中k是2的幂次数)个人进行k/2场比赛,每场比赛有两个参赛选手,而且没有平局,输者被淘汰,这样直到只剩下一人比赛结束。每场比赛需要给每个选手b瓶水以及裁判一瓶水,且到比赛结束需要给选手提供p个毛巾。问需要准备多少瓶水和多少条毛巾。

思路

水题

代码

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){    int n,b,p,x,y;    while(~scanf("%d %d %d",&n,&b,&p))    {        x=0;        y=n*p;        while(n>1)        {            if(n%2)            {                x+=b*2;                x++;                n--;            }            else            {                x+=(n*b);                n/=2;                x+=n;            }        }        printf("%d %d\n",x,y);      }    return 0;}
0 0
原创粉丝点击