日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【蓝桥杯历年真题合集】蓝桥杯2020初赛

發布時間:2024/3/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【蓝桥杯历年真题合集】蓝桥杯2020初赛 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?🎡個人主頁:程序猿追

?🎡系列專欄:算法合集

?🎡目前狀態:創建Java學習之路(零基礎到就業實戰)系列,目前更新到JAVAWEB開發

?🎡作者簡介:大家好,我是程序猿追,全棧領域新星創作者,算法愛好者,常在作者周榜排名前30,某不知名的 ACMer

?🎡推薦一款刷題面試找工作三不誤的網站——牛客網

?🎡個人名言:不積跬步無以至千里,趁年輕,使勁拼,給未來的自己一個交代!

??門牌制作

小藍要為一條街的住戶制作門牌號。
這條街一共有2020 位住戶,門牌號從1 到2020 編號。
小藍制作門牌的方法是先制作0 到9 這幾個數字字符,最后根據需要將字符粘貼到門牌上,例如門牌1017 需要依次粘貼字符1、0、1、7,即需要1 個字符0,2 個字符1,1 個字符7。
請問要制作所有的1 到2020 號門牌,總共需要多少個字符2?

輸出格式

這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只輸出這個整數,輸出多余的內容將無法得分。

#include <iostream> #include <bits/stdc++.h> #include <algorithm>using namespace std;typedef long long ll;int main() {int num = 0;for(int i = 1; i <= 2020; i ++){if(i % 10 == 2) num ++;if(i / 10 % 10 == 2) num ++;if(i / 100 % 10 == 2) num ++;if(i / 1000 == 2) num ++;}cout << num;return 0; }

既約分數

如果一個分數的分子和分母的最大公約數是1,這個分數稱為既約分數。
例如\frac{3}{4},\frac{5}{2},\frac{1}{8},\frac{7}{1}43?,25?,81?,17?都是既約分數。
請問,有多少個既約分數,分子和分母都是1 到2020 之間的整數(包括1和2020)?

輸出格式

這是一道結果填空題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只輸出這個整數,輸出多余的內容將無法得分。

#include <iostream> #include <bits/stdc++.h> #include <algorithm>using namespace std;typedef long long ll;int main() {int x = 0;for(int i = 1; i <= 2020; i ++){for(int j = 1; j <= 2020; j ++){if(__gcd(i, j) == 1){x ++;}}}cout << x;return 0; }

?蛇形填數?

如下圖所示,小明用從1 開始的正整數“蛇形”填充無限大的矩陣。
\begin{matrix} 1 & 2 & 6 & 7 & 15 & ... \\ 3 & 5 & 8 & 14 & ... \\ 4 & 9 & 13 & ... \\ 10 & 12 & ... \\ 11 & ... \\ ...? ?\end{matrix}1341011...???25912...?6813...?714...15......
容易看出矩陣第二行第二列中的數是5。請你計算矩陣中第20 行第20 列的數是多少?

輸出格式

這是一道結果填空題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只輸出這個整數,輸出多余的內容將無法得分。

#include <iostream> #include <bits/stdc++.h> #include <algorithm>using namespace std;int main() {int s = 1;for(int i = 1; i < 20; i ++){s += 4 * i;}printf("%d",s);return 0; }

??七段碼

小藍要用七段碼數碼管來表示一種特殊的文字。


上圖給出了七段碼數碼管的一個圖示,數碼管中一共有7 段可以發光的二極管,分別標記為a, b, c, d, e, f, g。
小藍要選擇一部分二極管(至少要有一個)發光來表達字符。在設計字符的表達時,要求所有發光的二極管是連成一片的。
例如:b 發光,其他二極管不發光可以用來表達一種字符。
例如:c 發光,其他二極管不發光可以用來表達一種字符。這種方案與上一行的方案可以用來表示不同的字符,盡管看上去比較相似。
例如:a, b, c, d, e 發光,f, g 不發光可以用來表達一種字符。
例如:b, f 發光,其他二極管不發光則不能用來表達一種字符,因為發光的二極管沒有連成一片。
請問,小藍可以用七段碼數碼管表達多少種不同的字符?

輸出格式

這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只輸出這個整數,輸出多余的內容將無法得分。

#include <bits/stdc++.h> using namespace std; string str = "0000000"; string vis; int ans = 0; //如何檢查排列是否合法? int umap[7][7]; void initmap() {memset(umap, 0, sizeof(umap));umap[0][1] = umap[0][5] = 1;umap[1][0] = umap[1][2] = umap[1][6] = 1;umap[2][1] = umap[2][3] = umap[2][6] = 1;umap[3][2] = umap[3][4] = 1;umap[4][3] = umap[4][5] = umap[4][6] = 1;umap[5][0] = umap[5][4] = umap[5][6] = 1;umap[6][1] = umap[6][2] = umap[6][4] = umap[6][5] = 1; } void dfs(int curr) {vis[curr] = '0';//標記訪問過了for (int j = 0; j < 7; ++j){if (umap[curr][j] == 1 && vis[j] == '1')dfs(j);} } bool check() {int cnt = 0;for (int i = 0; i < 7;++i){if(vis[i]=='1'){dfs(i);++cnt;}}return cnt == 1; } int main() {initmap();for (int i = 0; i < 7; ++i){sort(str.begin(), str.end());str[6 - i] = '1';do{vis = str;if(check())++ans;} while (next_permutation(str.begin(), str.end()));}cout << ans << endl;return 0; }

跑步鍛煉

小藍每天都鍛煉身體。
正常情況下,小藍每天跑1 千米。如果某天是周一或者月初(1 日),為了激勵自己,小藍要跑2 千米。如果同時是周一或月初,小藍也是跑2 千米。
小藍跑步已經堅持了很長時間,從2000 年1 月1 日周六(含)到2020 年10 月1 日周四(含)。
請問這段時間小藍總共跑步多少千米?

這是一道結果填空的題,你只需要算出結果后提交即可。
本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。

#include<stdio.h> #include<stdlib.h> int main() {int ans=0;int mon = 6;int monthes[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};for(int i = 2000; i <= 2020; i ++){if((i%4==0&&i%100!=0)||(i%400==0))monthes[2]=29;elsemonthes[2]=28;for(int month = 1; month <= 12; month ++){for(int day = 1; day <= monthes[month]; day ++){ans ++;if(mon == 8)mon = 1;if(mon == 1 || day == 1)ans ++;mon ++;if(i == 2020 && month == 10 && day == 1)//截至日期輸出printf("%d",ans);}}}return 0; }

??回文日期

2020 年春節期間,有一個特殊的日期引起了大家的注意:2020 年2 月2日。因為如果將這個日期按“yyyymmdd” 的格式寫成一個8 位數是20200202,恰好是一個回文數。我們稱這樣的日期是回文日期。
有人表示20200202 是“千年一遇” 的特殊日子。對此小明很不認同,因為不到2 年之后就是下一個回文日期:20211202 即2021 年12 月2 日。
也有人表示20200202 并不僅僅是一個回文日期,還是一個ABABBABA型的回文日期。對此小明也不認同,因為大約100 年后就能遇到下一個ABABBABA 型的回文日期:21211212 即2121 年12 月12 日。算不上“千年一遇”,頂多算“千年兩遇”。
給定一個8 位數的日期,請你計算該日期之后下一個回文日期和下一個ABABBABA 型的回文日期各是哪一天。

輸入格式

輸入包含多組測試數據,第一行為正整數T。(T≤1000)
接下來T行,每行包含一個八位整數N,表示日期。
對于所有評測用例,10000101?≤?N?≤?89991231,保證N 是一個合法日期的8 位數表示。

輸出格式

對于每組測試數據輸出兩行,每行1 個八位數。
第一行表示下一個回文日期,第二行表示下一個ABABBABA 型的回文日期。

輸入樣例?

2 20200202 20211203

輸出樣例?

20211202 21211212 20300302 21211212 #include <iostream> using namespace std;int months[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool check(int y, int m, int d) {if (d <= 0 || m <= 0 || m >= 13) return false;if (m != 2) {if (d > months[m]) return false;}else{int days = months[2] + (y % 4 == 0 && y % 100 != 0 || y % 400 == 0);if (d > days) return false;}return true; }int flip(int x) {int res = 0;while (x){res = res * 10 + x % 10;x /= 10;}return res; }bool st1, st2; int ans1, ans2;int main() {int n;cin >> n;for (int i = n + 1; i <= 89991231; i++){int year = i / 10000, month = i % 10000 / 100, day = i % 100;if (check(year, month, day)){if (i % 10000 == flip(year) && !st1) st1 = true, ans1 = i;if (i % 10000 == flip(year) && (month / 10 == day / 10) && (month % 10 == day % 10) && !st2) st2 = true, ans2 = i;}if (st1 && st2) break;}printf("%d\n%d\n", ans1, ans2);return 0; }

?字串排序

小藍最近學習了一些排序算法,其中冒泡排序讓他印象深刻。
在冒泡排序中,每次只能交換相鄰的兩個元素。
小藍發現,如果對一個字符串中的字符排序,只允許交換相鄰的兩個字符,則在所有可能的排序方案中,冒泡排序的總交換次數是最少的。
例如,對于字符串lan 排序,只需要1 次交換。對于字符串qiao 排序,總共需要4 次交換。
小藍的幸運數字是V,他想找到一個只包含小寫英文字母的字符串,對這個串中的字符進行冒泡排序,正好需要V 次交換。請幫助小藍找一個這樣的字符串。
如果可能找到多個,請告訴小藍最短的那個。
如果最短的仍然有多個,請告訴小藍字典序最小的那個。
請注意字符串中可以包含相同的字符。

輸入格式

輸入第一行為T,表示存在T組測試數據。(T≤25)
對于每組測試數據,輸入一行包含一個整數V,為小藍的幸運數字。
對于所有評測用例,1 ≤ V?≤?10000。

輸出格式

每組測試數據,輸出一個字符串,為所求的答案。

輸入樣例

2 4 100

輸出樣例

bbaa jihgfeeddccbbaa #include<bits/stdc++.h> using namespace std; int V , len , now , cnt[27] , sum[27]; int get_max(int len){return ((len - (len / 26 + 1)) * (len / 26 + 1) * (len % 26) + (26 - len % 26) * (len / 26) * (len - len / 26)) / 2; } bool check(int x , int n){memset(cnt , 0 , sizeof(cnt));int add1 = 0 , add2 = 0;for(int j = 26 ; j >= x + 1 ; j --) add1 += sum[j];sum[x] ++ ;for(int L = 1 ; L <= n ; L ++){int ma = -1 , pos = 0 , num = 0;for(int j = 26 ; j >= 1 ; j --){if(L - 1 - cnt[j] + num > ma){ma = L - 1 - cnt[j] + num;pos = j;}num += sum[j];}add2 += ma , cnt[pos] ++;}if(now + add1 + add2 >= V) {now += add1;return true;}else {sum[x] -- ;return false;} } signed main() {string ans = "";cin >> V;for(int i = 1 ; ; i ++) {if(get_max(i) >= V){len = i;break ;}}for(int i = 1 ; i <= len ; i ++){for(int j = 1 ; j <= 26 ; j ++){if(check(j , len - i)){ans += char(j + 'a' - 1);break ;}}}cout << ans << '\n';return 0; }

??成績統計

小藍給學生們組織了一場考試,卷面總分為100 分,每個學生的得分都是一個0 到100 的整數。
如果得分至少是60 分,則稱為及格。如果得分至少為85 分,則稱為優秀。
請計算及格率和優秀率,用百分數表示,百分號前的部分四舍五入保留整數。

輸入格式

輸入的第一行包含一個整數n,表示考試人數。
接下來n 行,每行包含一個0 至100 的整數,表示一個學生的得分。

輸出格式

輸出兩行,每行一個百分數,分別表示及格率和優秀率。
百分號前的部分四舍五入保留整數。

輸入樣例

7 80 92 56 74 88 100 0

輸出樣例

71% 43% #include <iostream> #include <bits/stdc++.h> #include <algorithm> #include <vector> #include <cmath> #include <queue> #include <bitset>using namespace std;typedef long long ll;int main() {int n, jige = 0, youxiu = 0;cin >> n;int m = n;while(n --){int a;cin >> a;if(a >= 60)jige ++;if(a >= 85)youxiu ++;}double sum1 = jige * 1.00 / m * 100;double sum2 = youxiu * 1.00 / m * 100;printf("%.0lf%\n%.0lf%\n",sum1, sum2);return 0; }

?子串分值和

對于一個字符串S ,我們定義S 的分值f (S ) 為S 中出現的不同的字符個數。
例如f (”aba”) = 2, f (”abc”) = 3, f (”aaa”) = 1。
現在給定一個字符串S [0 : n -?1](長度為n),請你計算對于所有S 的非空子串S [i : j](0?≤?i?≤?j < n), f (S [i:: j]) 的和是多少。

輸入格式

輸入一行包含一個由小寫字母組成的字符串S 。
對于所有評測用例,1 ≤ n ≤ 100000。

輸出格式

輸出一個整數表示答案。

輸入樣例

ababc

輸出樣例

28 #include <iostream> #include<cstring>using namespace std;typedef long long ll;int main() {string s;cin >> s;ll total = 0;int a[26];memset(a,-1,sizeof(a)); a[s[0] - 'a'] = 0;total += s.size(); for(int i=1;i<s.size();i++){total += (i - a[s[i] - 'a']) * (s.size() - i);a[s[i] - 'a'] = i;}cout << total;return 0; }

算法對程序員來說及其重要,語言和開發平臺不斷變化,但是萬變不離其宗的是那些算法和理論,依稀記得我那個玩的很好的一個學長(在大二就拿到了 offer),他告訴我想找一個好的工作,那刷題一定是必不可少的

現在算法刷題平臺還是蠻多的,給大家介紹一個我認為與大廠關聯最深的平臺——牛客網

總結

以上是生活随笔為你收集整理的【蓝桥杯历年真题合集】蓝桥杯2020初赛的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。