試題 A: 門牌制作
【問題描述】
小藍要為一條街的住戶制作門牌號。
這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。
小藍制作門牌的方法是先制作 0 到 9 這幾個數字字符,最后根據需要將字
符粘貼到門牌上,例如門牌 1017 需要依次粘貼字符 1、 0、 1、 7,即需要 1 個
字符 0, 2 個字符 1, 1 個字符 7。
請問要制作所有的 1 到 2020 號門牌,總共需要多少個字符 2?
答案:
624
試題 B: 既約分數
【問題描述】
如果一個分數的分子和分母的最大公約數是 1,這個分數稱為既約分數。
例如,都是既約分數。
請問,有多少個既約分數,分子和分母都是 1 到 2020 之間的整數(包括 1
和 2020)?
解析:
直接調用__gcd(),gcd==1即++
答案:
2481215
試題 C: 蛇形填數
如下圖所示,小明用從 1 開始的正整數“蛇形”填充無限大的矩陣。
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
容易看出矩陣第二行第二列中的數是 5。請你計算矩陣中第 20 行第 20 列
的數是多少 ?
答案:
761
反思:
這次比賽,我敗在了這個題上。當然不能怪它,這的確是個好題,怪我自己的臨場發揮不行。
由於怕推導公式出錯,我進行了模擬,但是由於坐標多加多減以及其他問題,調試了長達一個半小時。直接導致心態爆炸,七數碼沒空做,大題草草了事,很是后悔。
賽后,五分鍾連寫帶調,出結果。果然,心態,還得練。
#include<iostream> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int m[111][111]; int main() { int cnt=2; int ok=0; int ans=2; int x=1,y=2;m[1][1]=1; while(x<=50&&y<=50) { if(!ok) { for(int i=1;i<=ans;i++) { m[x][y]=cnt; cnt++; x++;y--; } x--;y++; x+=1; ok=1; } else { for(int i=1;i<=ans;i++) { m[x][y]=cnt; cnt++; x--; y++; } x++; y--; y++; ok=0; } ans++; } cout<<m[20][20]; // for(int i=1;i<=30;i++) // { // for(int j=1;j<=30;j++) // cout<<m[i][j]<<" "; // cout<<endl; // } }
試題 D: 跑步鍛煉
【問題描述】
小藍每天都鍛煉身體。
正常情況下,小藍每天跑 1 千米。如果某天是周一或者月初(1 日),為了
激勵自己,小藍要跑 2 千米。如果同時是周一或月初,小藍也是跑 2 千米。
小藍跑步已經堅持了很長時間,從 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。請問這段時間小藍總共跑步多少千米?
答案:
8879
反思:
2020 9 30之前的全模擬算對了,但是在10月1出了差錯,明明是1號應該+2,但是我+1。真的很想給自己一巴掌。
試題 E: 七段碼
【問題描述】
小藍要用七段碼數碼管來表示一種特殊的文字。
上圖給出了七段碼數碼管的一個圖示,數碼管中一共有 7 段可以發光的二 極管,分別標記為 a, b, c, d, e, f, g。
小藍要選擇一部分二極管(至少要有一個)發光來表達字符。在設計字符 的表達時,要求所有發光的二極管是連成一片的。
例如: b 發光,其他二極管不發光可以用來表達一種字符。
例如: c 發光,其他二極管不發光可以用來表達一種字符。這種 方案與上 一行的方案可以用來表示不同的字符,盡管看上去比較相似。
例如: a, b, c, d, e 發光, f, g 不發光可以用來表達一種字符。
例如: b, f 發光,其他二極管不發光則不能用來表達一種字符,因為發光 的二極管沒有連成一片。
請問,小藍可以用七段碼數碼管表達多少種不同的字符?
另外寫了篇較為詳細的題解:
https://www.cnblogs.com/liyexin/p/13893257.html
由於很多評測網站還沒有上線本次大題。先寫到這兒吧。