ccf有趣的數 dp
問題描述
我們把一個數稱為有趣的,當且僅當:
1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。
2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。
3. 最高位數字不為0。
因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個:2031和2301。
請計算恰好有n位的有趣的數的個數。由於答案可能非常大,只需要輸出答案除以1000000007的餘數。
輸入格式
輸入只有一行,包括恰好一個正整數n (4 ≤ n ≤ 1000)。
輸出格式
輸出只有一行,包括恰好n 位的整數中有趣的數的個數除以1000000007的餘數。
樣例輸入
4
樣例輸出
3
這道題用的dp動態規劃思想,先考慮以下對符號串的分類,因為這道題中符合的數字應該是以2開頭的,所以下面所有的符號都保證以2開頭的
第一種符號串,只包含數字2
第二種符號串,只包含數字2和數字0
第三種符號串,只包含數字2和數字3
第四種符號串,只包含數字2,0和1,且滿足0在1前頭
第五種符號串,只包含數字2,0和3,且滿足2在3前頭
第六種符號串,包含數字2,0,1,3,且滿足0在1前頭,2在3前頭
然後我們看他們的遞推關係
第一種長度為L的符號串只有1種,記做f(L,S1)
第二種長度為L的符號串的個數記做f(L,S2)=f(L-1,S2)*2+f(L-1,S1),因為第二種符號串可以看做,長度為L-1的S2符號串在後面加上一個2或者一個0,還有可能是S1符號串加上了一個2。提示(第二種符號串中至少有一個0,而第一種符號串中沒有0,以下以此類推)
第三種長度為L的符號串的個數記做f(L,S3)=f(L-1,S3)+f(L-1,S1),因為第二種符號串可以看做,長度為L-1的S2符號串在後面加上一個3,還有可能是S1符號串加上了一個3.
第四種長度為L的符號串的個數記做f(L,s4)=f(L-1,S4)*2+f(l-1,S2),因為第四種符號串可以看做,長度為L-1的S4符號串在後面加了一個2或者1,還有可能是S2符號串在後面加了一個1.
以此類推,最後可以得到長度為L的第六種符號串的長度。
程式碼如下
#include<bits/stdc++.h>
using namespace std;
const long long mod=1000000007;
long long f[1010][10];
int main()
{
int n;
cin>>n;
memset(f,0,sizeof(f));
f[1][1]=1;
for(int i=2; i<=n; ++i)
{
f[i][1]=1;
f[i][2]=(f[i-1][2]*2+f[i-1][1])%mod;
f[i][3]=(f[i-1][3]+f[i-1][1])%mod;
f[i][4]=(f[i-1][4]*2+f[i-1][2])%mod;
f[i][5]=(f[i-1][5]*2+f[i-1][2]+f[i-1][3])%mod;
f[i][6]=(f[i-1][6]*2+f[i-1][5]+f[i-1][4])%mod;
}
cout<<f[n][6];
}
相關推薦
ccf有趣的數 dp
問題描述 我們把一個數稱為有趣的,當且僅當: 1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。 2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。 3. 最高位數字不為0。 因此,符合我們定義的最小的有趣的數是2
ccf 有趣的數(數位dp)
問題描述 我們把一個數稱為有趣的,當且僅當: 1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。 2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之
ccf有趣的數
201312-4 試題名稱: 有趣的數 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述 我們把一個數稱為有趣的,當且僅當: 1. 它的數字只包含0, 1, 2, 3,且這四個數字都
CCF 有趣的數
問題描述 我們把一個數稱為有趣的,當且僅當: 1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。 2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。 3. 最高位數字不為0。 因此,符合我們定義的最小的有趣的數是2013。除此以外,
使用PHP實現水仙花數及各種特殊有趣數的輸出
php 水仙花數 特殊數據 有趣 算法尊敬的讀者,見文好。本文包含以下內容:1,為什麽要寫這篇文章!2,具體的方案及代碼實現!3,你可能遇到的問題!4,文末本文測試用源碼網盤地址!特殊說明:本文使用的語言是PHP;本文運行的環境是:Apache2.4, PHP5.6 。第一部分:為什麽要寫這篇文章!因為經常會
XJOI 傳送(線性篩數論函數,dp)
mes col pad img es2017 png cstring char wid 這題就是篩了一個除數函數,沒什麽好說的 #include<cstdio> #include<cstring> #include<cs
hiho 1617 - 方格取數 - dp
包含 ring width ++ 多少 png es2017 alt 不能 題目鏈接 描述 給定一個NxN的方格矩陣,每個格子中都有一個整數Aij。小Hi和小Ho各自選擇一條從左上角格子到右下角格子的路徑,要求路徑中每一步只能向右或向下移動,並且兩條路徑不能相交(除了左上右
BZOJ 1026--windy數(DP&容斥)
scan des 數字 cst -- ace ans input data 1026: [SCOI2009]windy數 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8856 Solved: 4007[Submit]
Codeforces Round #100 E. New Year Garland (第二類斯特林數+dp)
using 情況 inline 顏色不同 force jai 相同 其中 problem 題目鏈接: http://codeforces.com/problemset/problem/140/E 題意: 聖誕樹上掛彩球,要求從上到下掛\(n\)層彩球。已知有\(m\)種顏色
CCF--中間數--用JAVA威尼斯人平臺出租語言實現
大於 ref import 一行 排序 代碼 sys ccf 繼續 問題描述威尼斯人平臺出租 haozbbs.com Q1446595067 在一個整數序列a1, a2, …, an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在一個序列
10.15二中校內T3 方案數dp
10.15 T3 Dp **3.棋子 (chess.cpp/c/pas) 【問題描述】 Magolor要在長方形的棋盤上放置棋子。 他有一個n*m格的棋盤,以及k種不同顏色的棋子。第i種顏色的棋子有a_i個,同樣顏色的棋子沒有區別。他要把這些棋子全部放到棋盤中,但是有些棋子會互相
藍橋杯 K好數 DP
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
CCF——中間數(2016-12)
說明:定義兩個臨時變數分別儲存大於此數的個數和小於此數的個數,然後比較這兩個變數是否相等即可。特別注意:min和max為0,也有中間數,比如2 2 2 2的中間數為2 import java.util.Scanner; public class 中間數 { public static voi
洛谷P1004 方格取數 dp
這一題相當於兩個人從左上角走到右上角 dp[i][j][k][l]表示第一個人走到(i,j)第二個人走到(k,l)時取到數總和的最大值 dp[i][j][k][l]=max(dp[i-1][j][k-1][l],dp[i-1][j][k][l-1],dp[i][j-1][k-1][l],dp[i][j-1
CCF NOI1035. 數根 (C++)
1035. 數根 題目描述 數根是這樣定義的:對於一個正整數n,將它的各個數位上的數字相加得到一個新數,如果這個數是一位數,我們就稱之為n的數根,否則重複處理直到它成為一個一位數。 例如,n=34,3+4=7,7是一位數,所以7是34的數根。 再如,n=345,3+4+5
滴滴出行 數字和為sum的方法數(dp)
給定一個有n個正整數的陣列A和一個整數sum,求選擇陣列A中部分數字和為sum的方案數。 當兩種選取方案有一個數字的下標不一樣,我們就認為是不同的組成方案。 輸入描述: 輸入為兩行: 第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000
滴滴出行 數字和為sum的方法數(dp)
給定一個有n個正整數的陣列A和一個整數sum,求選擇陣列A中部分數字和為sum的方案數。 當兩種選取方案有一個數字的下標不一樣,我們就認為是不同的組成方案。 輸入描述: 輸入為兩行: 第一行為兩個正整數n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 第二行為n個正
sincerit 一卡通大冒險(集合劃分問題(貝爾數) dp)
一卡通大冒險 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2912 Accepted Submission(s): 1975 Pro
【CF 140E】New Year Garland(第二類斯特林(Stirling)數+DP+容斥)
As Gerald, Alexander, Sergey and Gennady are already busy with the usual New Year chores, Edward hastily decorates the New Year Tree. And any decent New Ye
CCF 相鄰數對
#include <iostream> #include<cstring> #include<algorithm> #include<stack> #include<list> #include<queu