CodeForces - 337 C. Quiz【贪心】
来源:互联网 发布:jquery储存数据 编辑:程序博客网 时间:2024/05/18 04:44
Manao is taking part in a quiz. The quiz consists of n consecutive questions. A correct answer gives one point to the player. The game also has a counter of consecutive correct answers. When the player answers a question correctly, the number on this counter increases by 1. If the player answers a question incorrectly, the counter is reset, that is, the number on it reduces to 0. If after an answer the counter reaches the number k, then it is reset, and the player's score is doubled. Note that in this case, first 1 point is added to the player's score, and then the total score is doubled. At the beginning of the game, both the player's score and the counter of consecutive correct answers are set to zero.
Manao remembers that he has answered exactly m questions correctly. But he does not remember the order in which the questions came. He's trying to figure out what his minimum score may be. Help him and compute the remainder of the corresponding number after division by 1000000009 (109 + 9).
The single line contains three space-separated integers n, m and k (2 ≤ k ≤ n ≤ 109; 0 ≤ m ≤ n).
Print a single integer — the remainder from division of Manao's minimum possible score in the quiz by 1000000009(109 + 9).
5 3 2
3
5 4 2
6
Sample 1. Manao answered 3 questions out of 5, and his score would double for each two consecutive correct answers. If Manao had answered the first, third and fifth questions, he would have scored as much as 3 points.
Sample 2. Now Manao answered 4 questions. The minimum possible score is obtained when the only wrong answer is to the question 4.
Also note that you are asked to minimize the score and not the remainder of the score modulo 1000000009. For example, if Manao could obtain either 2000000000 or 2000000020 points, the answer is 2000000000 mod 1000000009, even though 2000000020 mod 1000000009 is a smaller number.
AC代码:
#include<cstdio>typedef long long LL;const int MOD=1e9+9;LL Pow(LL base,LL y,LL MOD){LL ans=1;while(y) {if(y&1) ans=(ans*base)%MOD;y>>=1; base=(base*base)%MOD;} return ans; } int main(){LL N,M,K;while(~scanf("%lld%lld%lld",&N,&M,&K)){LL S=N%(K)+N/K*(K-1);LL ans=0;if(S>=M) {ans=M;} else { LL tem=M-S; ans=(Pow(2,tem+1,MOD)+MOD-2)%MOD*K%MOD; ans=(ans+M-(M-S)*K);}printf("%lld\n",(ans%MOD+MOD)%MOD);}return 0;}
- codeforces - 337c Quiz【贪心】
- 【codeforces 337C Quiz】 + 贪心
- CodeForces - 337 C. Quiz【贪心】
- 【CodeForces】337C - Quiz(贪心,思维)
- Codeforces 337C Quiz 贪心+快速幂
- Codeforces 337C Quiz【贪心+快速幂】
- codeforces 337C-quiz 贪心加矩阵快速幂
- Codeforces 337C:Quiz(贪心+规律+快速幂)
- codeforces 337C Quiz(快速幂+推公式+贪心)
- codeforces 337C Quiz
- CodeForces 337C. Quiz
- CodeForces 337C. Quiz
- Codeforces Round #196 (Div. 2) / 337C Quiz (贪心&快速幂取模)
- Codeforces Round #196 (Div. 2) C--Quiz(快速幂+贪心)
- CodeForces 337C Quiz(1等比数列找规律)
- 337C - Quiz
- cf-337C Quiz
- Codeforces Round #196 (Div. 2) C. Quiz
- SIFT四部曲之——高斯滤波
- JavaScript 变量那些事儿
- hdu 1166
- mysql下载
- 图解PowerDesigner中设置主键自增
- CodeForces - 337 C. Quiz【贪心】
- css实现面包屑导航与冒泡框(border属性与伪类选择器)
- LeetCode 7. Reverse Integer
- 斜线数独
- Java编程实现数组排序——(一)插入排序
- [PPC]不關機退出LAND AIR SEA WARFARE
- ubuntu14.04 64位caffe配置遇到libboost依赖问题
- TP-LINK无线路由器WDS功能应用提升家中WIFI速度
- 业余04—VC++6.0Error spawning cl.exe路径错误解决办法