以下為第十一屆藍橋杯大賽第二次模擬(軟體類)真題加我寫的題解,如有錯誤望指正。
【問題描述】
在計算機儲存中,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 的餘數即可。答案提交 這是一道結果填空題,你只需要算出結果後提交即可。本題的結果為乙個整數,在提交答案時只填寫這個整數,填寫多...