时间:2016-04-08 13:01:50 星期五
题目编号:[2016-04-08][codeforces][628][A][Tennis Tournament]
题目大意:有n个人参加比赛,每次选择不大于n的最大的2^k的人数参加比赛,每场比赛需要给选手发b瓶水,给裁判发1瓶水,整个锦标赛,需要给所有参赛人每人发一条毛巾,问整个锦标赛需要多少瓶水和多少条毛巾
分析:n只有500,直接暴力枚举,2的指数幂,每次选择不大于当前参赛人数的,模拟整个过程,计算相应的数值
#include <cstdio>using namespace std;int main(){ int n,b,p; scanf("%d%d%d",&n,&b,&p); int left = 0,res = 0,tmp = n; while(n > 1){ for(int i = 9 ; i >= 0 ; --i){ if((1 << i) & n){ left = n - (1 << i); n = (1 << (i-1)); res += n * (b*2 + 1); break; } } n += left; } printf("%d %d\n",res,tmp * p); return 0;}