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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

?🎡個人主頁:程序猿追

?🎡系列專欄:算法合集

?🎡目前狀態(tài):創(chuàng)建Java學(xué)習(xí)之路(零基礎(chǔ)到就業(yè)實戰(zhàn))系列,目前更新到JAVAWEB開發(fā)

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

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

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

??門牌制作

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

輸出格式

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

#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; }

既約分?jǐn)?shù)

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

輸出格式

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

#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; }

?蛇形填數(shù)?

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

輸出格式

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

#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; }

??七段碼

小藍(lán)要用七段碼數(shù)碼管來表示一種特殊的文字。


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

輸出格式

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

#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';//標(biāo)記訪問過了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; }

跑步鍛煉

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

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

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

輸入格式

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

輸出格式

對于每組測試數(shù)據(jù)輸出兩行,每行1 個八位數(shù)。
第一行表示下一個回文日期,第二行表示下一個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; }

?字串排序

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

輸入格式

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

輸出格式

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

輸入樣例

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; }

??成績統(tǒng)計

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

輸入格式

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

輸出格式

輸出兩行,每行一個百分?jǐn)?shù),分別表示及格率和優(yōu)秀率。
百分號前的部分四舍五入保留整數(shù)。

輸入樣例

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

輸入格式

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

輸出格式

輸出一個整數(shù)表示答案。

輸入樣例

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; }

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

現(xiàn)在算法刷題平臺還是蠻多的,給大家介紹一個我認(rèn)為與大廠關(guān)聯(lián)最深的平臺——牛客網(wǎng)

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。