description
lcj報名參加了乙個特殊的電視問答節目。這個節目共有
n 個問題,每回答正確1題,lcj就會獲得1分,而每當lcj連續答對
k題,那麼他的現有得分乘以2,注意答對第
k 題後,是先加1分到總分中,再把總分乘以2,此時連續答對題目計數器會清零。現在lcj成功對了
m題,他想知道他的最小得分。因為這個數字可能很大,你只需要輸出這個數對1,000,000,009取模的結果即可。
input
僅一行,三個數n,
m,k 如題目描述。
2<=
k<=
n<=109
,0<=
m<=
n 。
output
僅一行,乙個數,lcj的最小得分。
sample input
5 3 2
sample output
3hint
思路
每次答題得分的最小值一定是盡可能連續答對k−
1 題,如果還有可以答對的題,那麼都放在前面的空缺中。注意這道題要快速冪,由於連續答對k∗
m 的得分為2(
2(2(
k)+k
)+k.
..)=
2m+2
m−1+
...+
2=2m
+1−2
,因此答案加上這個值再減去重複求的值就好了。
**
#include
const
long
long mo=1000000009ll;
long
long n,m,k,ans;
long
long quickpow(long
long a,long
long b,long
long m)
b/=2;
a=(a*a)%m;
}return res;
}int main()
else
else
}printf("%lld\n",ans);
return
0;}
程式設計題 比賽模擬
from random import random def printintro 列印程式介紹資訊 print 桌球競技分析 print 這個程式模擬兩個隊伍a和b桌球比賽 print 程式執行需要隊伍a和隊伍b的能力值 以0到1之間的小數表示 def getinputs 獲得程式執行引數 a ev...
NOIP2017模擬 舉辦比賽
2017.8.27 t1 1946 樣例資料1 輸入5 5 1 2 3 4 5 輸出 樣例資料2 輸入10000000 10000000 555 888 777 666 12345 輸出 分析 第一次做這種隨機概率題 看到資料那麼大o n 的做法根本想不到就直接放棄了。結果就是個撞運氣的ffffff...
NOIP2012模擬10 27 比賽
description 有兩個隊伍a和b,每個隊伍都有n個人。這兩支隊伍之間進行n場1對1比賽,每一場都是由a中的乙個選手與b中的乙個選手對抗。同乙個人不會參加多場比賽,每個人的對手都是隨機而等概率的。例如a隊有a1和a2兩個人,b隊有b1和b2兩個人,那麼 a1 vs b1,a2 vs b2 和 ...