[程式設計題] 小易喜歡的數列
小易非常喜歡擁有以下性質的數列:
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