NOIP訓練營內部試題 分糖果

2021-09-22 19:51:53 字數 2062 閱讀 9305

noip訓練營內部試題-分糖果

摘自:清北學堂noip訓練營試題t2

題目:分糖果

分糖果(candy)

time limit:1000ms memory limit:128mb

題目描述:

總共有n顆糖果,有3個小朋友分別叫做l,y,k。每個小朋友想拿到至少k顆糖果,但這三個小朋友有乙個共同的特點:對3反感。也就是說,如果某個小朋友拿到3顆,13顆,31顆,333顆這樣數量的糖果,他就會不開心。(也即它拿到的糖果數量不包含有一位是3)

lyk掌管著這n顆糖果,它想問你有多少種合理的分配方案使得將這n顆糖果全部分給小朋友且沒有小朋友不開心。

例如當n=3,k=1時只有1種分配方案,當n=4,k=1時有3種分配方案分別是112,121,211。當n=7,k=2時則不存在任何一種合法的方案。

當然這個答案可能會很大,你只需輸出答案對12345647取模後的結果就可以了。

輸入格式(candy.in)

第一行兩個數表示n,k。

輸出格式(candy.out)

乙個數表示方案總數。

輸入樣例

99999 1

輸出樣例

9521331

對於30%的資料n<=100

對於50%的資料n<=1000。

對於另外30%的資料k=1。

對於100%的資料3<=n<=10^10000,1<=k<=n/3,且n,k不包含前導0。

題解:50分 暴力

#include

#include

#define mod 12345647

using namespace std;

int n,k,ans;

bool check(int x)

return 1;

}int main()

}cout<100分 數字dp

/*列舉兩個數,第三個數是確定,判斷一下。

f[i]表示i這個數字是否有3

dp[i][j][0/1][0/1][0/1]來表示當前從高到低第i位,並且這一位需要向它的高位進j位 j=[0,2] 這3個數分別是否超過了k

NOIP訓練營內部試題 數數(樹形DP 倍增)

摘要 本文清北學堂noip訓練營試題t3試題。樣例讀入 4 1 21 3 2 4樣例輸出 8樣例解釋 解析 樹形dp 倍增 回想倍增法求lca的過程 從大到小列舉k,每次跳2 k步,只要不越界就跳,最後一定能跳到lca 因為跳的都是2的冪次步,所以每跳一步就是二進位制加了乙個1 先預處理fa i k...

牛客提高訓練營2B 分糖果

題目 發現自己一年之前非常垃圾 題目大意是給你乙個 n 個點的環,給每個點乙個 1,a i 的取值,並且滿足環上任意相連兩點權值不能相等,求方案數 考慮斷環為鏈,發現不大會 不妨考慮所有 a i 均相等的情況,設 m a i 對於第乙個點,有 m 種選擇,其後每乙個點的取值都不能和上乙個相等,即 m...

牛客寒假演算法基礎訓練營3 G 糖果

傳送門 在乙個幼兒園裡面有n個小朋友,分別編號1,2,n1,2,n。在這些小朋友中有一些小朋友互為朋友關係,總共有 mathit mm對朋友。作為幼兒園老師,你想買一些糖果分給小朋友,你知道第i個小朋友想要至少想要ai個糖果。個糖果,否則他就會不開心。同時,如果乙個小朋友得到的糖果數小於他某個朋友得...