1. 程式人生 > >[程式設計題] 小易喜歡的數列

[程式設計題] 小易喜歡的數列

小易非常喜歡擁有以下性質的數列:
1、數列的長度為n
2、數列中的每個數都在1到k之間(包括1和k)
3、對於位置相鄰的兩個數A和B(A在B前),都滿足(A <= B)或(A mod B != 0)(滿足其一即可)
例如,當n = 4, k = 7
那麼{1,7,7,2},它的長度是4,所有數字也在1到7範圍內,並且滿足第三條性質,所以小易是喜歡這個數列的
但是小易不喜歡{4,4,4,2}這個數列。小易給出n和k,希望你能幫他求出有多少個是他會喜歡的數列。
輸入描述:
輸入包括兩個整數n和k(1 ≤ n ≤ 10, 1 ≤ k ≤ 10^5)

輸出描述:
輸出一個整數,即滿足要求的數列個數,因為答案可能很大,輸出對1,000,000,007取模的結果。

輸入例子1:
2 2

輸出例子1:
3

解題思路

動態規劃 dp[i][j]表示的含義是前i個整數,以j結尾的時候,有多少喜歡的數列。
轉義方程如下
dp[i][j]=sum( dp[i-1][1,2,3,…,k] ) - sum(dp[i-1][x] , x>j且 x%j=0)

解釋一下方程的意思,當新增加固定一個數的時候,這個新串的種類數,就是不增加這一位時所有喜歡數列種類之和,這是總數,再減去前一位中不滿足(A <= B)或(A mod B != 0)這條性質的串。


import java.util.Scanner;

public class Main {
    final static
int num = 1000000007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); sc.close(); int[][] dp = new int[n + 1][k + 1]; dp[0][1]=1; for (int i = 1; i <= n; i++) { int
sum = 0; for (int j = 1; j <= k; j++) { sum += dp[i - 1][j]; sum %= num; } for (int x = 1; x <= k; x++) { int sum2 = 0; for (int y = x + x; y <= k; y += x) { sum2 += dp[i - 1][y]; sum2 %= num; } dp[i][x] = (sum - sum2 + num) % num; } } int result = 0; for (int i = 1; i <= k; i++) { result += dp[n][i]; result %= num; } System.out.println(result); } }

相關推薦

[程式設計] 喜歡數列

小易非常喜歡擁有以下性質的數列: 1、數列的長度為n 2、數列中的每個數都在1到k之間(包括1和k) 3、對於位置相鄰的兩個數A和B(A在B前),都滿足(A <= B)或(A mod B != 0)(滿足其一即可) 例如,當n = 4, k = 7

2017內推 [程式設計]喜歡數列

[程式設計題]小易喜歡的數列 熱度指數:1954時間限制:1秒空間限制:32768K 小易非常喜歡擁有以下性質的數列: 1、數列的長度為n 2、數列中的每個數都在1到k之間(包括1和k) 3、

牛客網線上程式設計(14):喜歡的單詞

題目描述 小易喜歡的單詞具有以下特性: 1.單詞每個字母都是大寫字母 2.單詞沒有連續相等的字母 3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。 例如: 小易不喜歡"ABBA",因為這裡有兩個連續的'B' 小易不喜歡"THETXH",因

2018網校招內推-喜歡數列

題目描述: 小易非常喜歡擁有以下性質的數列: 1、數列的長度為n 2、數列中的每個數都在1到k之間(包括1和k) 3、對於位置相鄰的兩個數A和B(A在B前),都滿足(A <= B)或(A mod B != 0)(滿足其一即可) 例如,當n = 4

21天刷計劃之2.2—喜歡的單詞(Java語言描述)

題目描述: 小易喜歡的單詞具有以下特性: 1.單詞每個字母都是大寫字母 2.單詞沒有連續相等的字母 3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。 例如: 小易不喜歡"ABBA",因為這裡有兩個連續的’B’

喜歡數列(網18校招內推)

小易非常喜歡擁有以下性質的數列: 1、數列的長度為n 2、數列中的每個數都在1到k之間(包括1和k) 3、對於位置相鄰的兩個數A和B(A在B前),都滿足(A <= B)或(A mod B != 0)(滿足其一即可) 例如,當n = 4, k = 7 那麼{1,7,7,2

喜歡的單詞(正則表達式)

ati code 組成 長度 question 這樣的 () public 數字 題目描述 小易喜歡的單詞具有以下特性:1.單詞每個字母都是大寫字母2.單詞沒有連續相等的字母3.單詞沒有形如“xyxy”(這裏的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連

牛客網題解-喜歡的單詞

小易最喜歡的單詞  import java.util.*; public class Main { public static void main(String args[]){ Scanner in=new Scanner(System.in);

牛客練習-喜歡的單詞

小易喜歡的單詞具有以下特性: 1.單詞每個字母都是大寫字母 2.單詞沒有連續相等的字母 3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。 例如: 小易不喜歡"ABBA",因為這裡有兩個連續的'B' 小易不喜歡"THETXH",因為這裡包含子序列"

騰訊筆試程式設計--Q上廁所

題目 小Q今天在上廁所時想到了這個問題:有n個數,兩兩組成二元組,差最小的有多少對呢?差最大呢? 輸入 輸入包含多組測試資料。 對於每組測試資料: N - 本組測試資料有n個數 a1,a2…an - 需要計算的資料

python 牛客 喜歡的單詞

這裡可以用正則匹配這樣的騷方法 s=input() import re pattern1 = re.compile(r"[^A-Z]+") pattern2 = re.compile(r"([A-Z])\1") pattern3 = re.compile(r"([A-Z])[A-Z]*(

喜歡的單詞(簡單比較)

題目描述 小易喜歡的單詞具有以下特性: 1.單詞每個字母都是大寫字母 2.單詞沒有連續相等的字母 3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。 例如: 小易不喜歡”ABBA”,因為這裡有兩個連

演算法---喜歡的單詞

小易喜歡的單詞具有以下特性: 1.單詞每個字母都是大寫字母 2.單詞沒有連續相等的字母 3.單詞沒有形如“xyxy”(這裡的x,y指的都是字母,並且可以相同)這樣的子序列,子序列可能不連續。 例如: 小

阿里2018測評程式設計——明購物。。。

以下是小編寫的程式碼,鑑於程式設計技巧笨拙,旨在和大家交流學習!!! package scan.input; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo

2019測試開發筆試程式設計第一俄羅斯方塊)

題目描述 小易有一個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。熒幕上一共有n列,每次都會有一個1x 1的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被佔滿時,這一行會被消去,並得到

[編程] 獨立的2018

cout 包括 names data- else 一段 網易 生活 str 小易為了向他的父母表現他已經長大獨立了,他決定搬出去自己居住一段時間。一個人生活增加了許多花費: 小易每天必須吃一個水果並且需要每天支付x元的房屋租金。當前小易手中已經有f個水果和d元錢,小易也能去

2018校園招聘程式設計

[程式設計題] 魔法幣 時間限制:1秒 空間限制:32768K 小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。 魔法機器1:如果投入x個魔法幣,魔法機器會將其變

程式設計:斐波那契數列

斐波納契數列以遞迴的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 這個數列從第2項開始,每一項都等於前兩項之和,而且當n趨向於無窮大時,前一項與後一項的比值越來越逼近黃金分割0.618. 1.使用for迴圈實現 def fib(

C和指標--程式設計9.14第10--判斷迴文函式

題目: 編寫函式   int palindrom( char *string); 如果引數字串是個迴文,函式就返回真,否則就返回假。迴文就是指一個字串從左向右讀和從右向左讀是一樣的。函式應忽略所有的非字母字元,而且在進行字元比較時不用區分大小寫。 前提是空白字元、標點符號和大小寫狀態被忽略,當Adam

【牛客網刷】飢餓的

題目描述 小易總是感覺飢餓,所以作為章魚的小易經常出去尋找貝殼吃。最開始小易在一個初始位置x_0。對於小易所處的當前位置x,他只能通過神祕的力量移動到 4 * x + 3或者8 * x + 7。因為使用神祕力量要耗費太多體力,所以它只能使用神祕力量最多100,000次。貝殼總生長在能被1,000