试题 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
由于很多评测网站还没有上线本次大题。先写到这儿吧。