第十一屆藍橋杯大賽第二次模擬(軟體類)真題

2021-10-24 13:48:29 字數 4073 閱讀 1541

以下為第十一屆藍橋杯大賽第二次模擬(軟體類)真題加我寫的題解,如有錯誤望指正。

【問題描述】

在計算機儲存中,12.5mb是多少位元組?

【答案提交】

12.5 * 1024 * 1024

【問題描述】

乙個包含有2019個結點的有向圖,最多包含多少條邊?(不允許有重邊)

【答案提交】

2019 * 2018

【問題描述】

將lanqiao中的字母重新排列,可以得到不同的單詞,如lanqiao、aailnoq等,注意這7個字母都要被用上,單詞不一定有具體的英文意義。

請問,總共能排列如多少個不同的單詞。

【答案提交】

數學方法就是7!/ 2(倆個a)

也可以寫出所有的字元排列順序,加入到set中統計個數

【問題描述】

由1對括號,可以組成一種合法括號序列:()。

由2對括號,可以組成兩種合法括號序列:()()、(())。

由4對括號組成的合法括號序列一共有多少種?

【答案提交】

直接套卡特蘭數的公式了,n個右括號前一定要有n個左括號。

【問題描述】

給定三個整數 a, b, c,如果乙個整數既不是 a 的整數倍也不是 b 的整數倍還不是 c 的整數倍,則這個數稱為反倍數。

請問在 1 至 n 中有多少個反倍數。

【輸入格式】

輸入的第一行包含乙個整數 n。

第二行包含三個整數 a, b, c,相鄰兩個數之間用乙個空格分隔。

【輸出格式】

輸出一行包含乙個整數,表示答案。

【樣例輸入】

302 3 6

【樣例輸出】

10【樣例說明】

以下這些數滿足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。

【評測用例規模與約定】

對於 40% 的評測用例,1 <= n <= 10000。

對於 80% 的評測用例,1 <= n <= 100000。

對於所有評測用例,1 <= n <= 1000000,1 <= a <= n,1 <= b <= n,1 <= c <= n。

直接暴力

【問題描述】

給定乙個單詞,請使用凱撒密碼將這個單詞加密。凱撒密碼是一種替換加密的技術,單詞中的所有字母都在字母表上向後偏移3位後被替換成密文。即a變為d,b變為e,...,w變為z,x變為a,y變為b,z變為c。

例如,lanqiao會變成odqtldr。

【輸入格式】

輸入一行,包含乙個單詞,單詞中只包含小寫英文本母。

【輸出格式】

輸出一行,表示加密後的密文。

【樣例輸入】

lanqiao

【樣例輸出】

odqtldr

【評測用例規模與約定】

對於所有評測用例,單詞中的字母個數不超過100。

class main 

stringbuffer buffer = new stringbuffer();

for (char c : arr)

system.out.println(buffer.tostring());

}}

【問題描述】

對於乙個 n 行 m 列的**,我們可以使用螺旋的方式給**依次填上正整數,我們稱填好的**為乙個螺旋矩陣。

例如,乙個 4 行 5 列的螺旋矩陣如下:

1 2 3 4 5

14 15 16 17 6

13 20 19 18 7

12 11 10 9 8

【輸入格式】

輸入的第一行包含兩個整數 n, m,分別表示螺旋矩陣的行數和列數。

第二行包含兩個整數 r, c,表示要求的行號和列號。

【輸出格式】

輸出乙個整數,表示螺旋矩陣中第 r 行第 c 列的元素的值。

【樣例輸入】

4 52 2

【樣例輸出】

15【評測用例規模與約定】

對於 30% 的評測用例,2 <= n, m <= 20。

對於 70% 的評測用例,2 <= n, m <= 100。

對於所有評測用例,2 <= n, m <= 1000,1 <= r <= n,1 <= c <= m。

注意輸出的行號列好是從1開始的…

public static void main(string args) 

private static void insert(int arr)

u++;

}if(dir == 1)

r--;

}if(dir == 2)

d--;

}if(dir == 3)

l++;

}dir= (dir + 1) % 4;

}}

【問題描述】

如果乙個序列的奇數項都比前一項大,偶數項都比前一項小,則稱為乙個擺動序列。即 a[2i]a[2i]。

小明想知道,長度為 m,每個數都是 1 到 n 之間的正整數的擺動序列一共有多少個。

【輸入格式】

輸入一行包含兩個整數 m,n。

【輸出格式】

輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。

【樣例輸入】

3 4【樣例輸出】

14【樣例說明】

以下是符合要求的擺動序列:

2 1 2

2 1 3

2 1 4

3 1 2

3 1 3

3 1 4

3 2 3

3 2 4

4 1 2

4 1 3

4 1 4

4 2 3

4 2 4

4 3 4

【評測用例規模與約定】

對於 20% 的評測用例,1 <= n, m <= 5;

對於 50% 的評測用例,1 <= n, m <= 10;

對於 80% 的評測用例,1 <= n, m <= 100;

對於所有評測用例,1 <= n, m <= 1000。

第一種暴力,但我想應該會超時o(n^m)

class main 

private static void bfs(int index, list> list)

}bfs(index- 1,list);

}else}}

}private static boolean is(listlist)

for (int i = 1; i < list.size(); i++)

if(i % 2 == 0 && list.get(i) >= list.get(i -1))

}return true;

}}

你按照我說的狀態畫一張表瞬間就能明白!

動態規劃解法

狀態dp[i][j]表示序列長度為i,並且末尾數是j時,符號條件的總個數。

轉移方程:

如果i是偶數,也就是最後一項是偶數項,那麼要看i-1列。

dp[i][j]結果就是前一列中最後一項大於j的和,因為偶數項要大於前一項的。

dp[i][j] = dp[i+1][j-1]+ dp[i+2][j-1] +… dp[n][j-1];

同理,如果i是奇數,最後一項為奇數,那麼

dp[i][j] = dp[1][j-1]+dp[2][j-1]+…dp[i-1][j-1];

class main 

for(int j = 2; j <= m; j++)

dp[i][j] = num;

}else

dp[i][j] = num;}}

}int count = 0;

for(int j = 1; j <= n; j++)

system.out.println(count);

}}

第十一屆藍橋杯大賽第二次模擬 7 螺旋

問題描述 對於乙個 n 行 m 列的 我們可以使用螺旋的方式給 依次填上正整數,我們稱填好的 為乙個螺旋矩陣。例如,乙個 4 行 5 列的螺旋矩陣如下 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8 輸入格式 輸入的第一行包含兩個整數 n,m,分...

第十一屆藍橋杯

問題描述 小藍要為一條街的住戶製作門牌號。這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。小藍製作門牌的方法是先製作 0 到 9 這幾個數字字元,最後根據需要將字 符貼上到門牌上,例如門牌 1017 需要依次貼上字元 1 0 1 7,即需要 1 個 字元 0,2 個字元 1,1 個...

第十一屆藍橋杯 矩陣

問題描述 把 1 2020 放在 2 1010 的矩陣裡。要求同一行中右邊的比左邊大,同一列中下邊的比上邊的大。一共有多少種方案?答案很大,你只需要給出方案數除以 2020 的餘數即可。答案提交 這是一道結果填空題,你只需要算出結果後提交即可。本題的結果為乙個整數,在提交答案時只填寫這個整數,填寫多...