试题A:门牌制作
题目
【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有2020位住户,门牌号从1到2020编号。小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。请问要制作所有的1到2020号门牌,总共需要多少个字符2?
【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解
答案:624
一
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int h(int x){
int s=0;
while(x>0){
if(x%10==2)
s++;
x/=10;
}
return s;
}
int main(){
int m,n,i,j,k=0;
cin>>m;
for(i=1;i<=m;i++){
if(h(i))
k=k+h(i);
}
cout<<k;
}
```
#include
#include<math.h>
#include
using namespace std;
int main(){
int m,n,i,j,k=0;
cin>>m;
for(i=1;i<=m;i++){
int x=i;
while(x>0){
if(x%10==2)
k++;
x/=10;
}
}
cout<<k;
}
试题B:既约分数
题目
【问题描述】如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。例如,3/4,5/2,1/8,7/1都是既约分数。请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和2020)?
【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解
答案:2481215
#include
#include<math.h>
#include
using namespace std;
int main(){
int i,j,s=0;
for(i=1;i<=2020;i++){
for(j=1;j<=2020;j++){
if(__gcd(i,j)==1)
s++;
}
}
cout<<s;
}
试题C:蛇形填数
题目
【问题描述】
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
等差数列:an+1=(2n+2)*n+1;
代入n=19,即an=20时即为结果
试题D:跑步锻炼
题目
【问题描述】小蓝每天都锻炼身体。正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米?
【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解
答案:8879
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int h(int y){
if((y%100!=0&&y%4==0)||y%400==0)
return 1;
else return 0;
}
int main(){
int a[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n,m,d,t=5,s=0,y;
for(y=2000;y<=2020;y++){
for(m=1;m<=12;m++){
for(d=1;d<=a[m]+(m==2?h(y):0);d++){
t=t%7+1;
// cout<<t<<" ";
if(d==1||t==1)
s=s+2;
else s++;
if(y==2020&&m==10&&d==1)
cout<<s;
}
}
}
}