《2020年蓝桥杯C++b组》

A-门牌制作

【问题描述】
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
//暴力

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int sum,t;
int main()
{
   
sum=0,t=0;
for(int i=1;i<=2020;i++) {
   
	t=i;
	while(t){
   
		if(t%10==2)
		sum++;
		t=t/10;
	}
}
cout<<sum<<endl;
    return 0;
}

B-既约分数

问题描述】
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如,3/4, 5/2, 1/8, 7/1 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1和 2020)?
//直接暴力就可以了

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int gcd(int a,int b) {
   
	return b?gcd(b,a%b):a;
}
int main() {
   
	int d=0,sum=0;
	for(int i=1; i<=2020; i++) {
   
		for(int j=1; j<=2020; j++) {
   
				d=gcd(i,j);
				if(d==1)
					sum++;
		}
	}
	cout<<sum<<endl;
	return 0;
}

C- 蛇形填数

【问题描述】
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …

请你计算矩阵中第 20 行第 20 列的数是多少?
//这是一个规律题 1 (14) 5 (+24) 13.。。。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int main()
{
   
	int sum=1;
	for(int i=1;i<20;i++)
	sum+=i*4;
	cout<<sum<<endl; 
    return 0;
}

D-跑步锻炼

【问题描述】
小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
//这个题目就是考查基本的日历问题
计数月,日或分钟等等
计算日的算法如下,小时分钟和秒就是在此基础上乘以相应的进制即可,月份就是在模板里面month++的时候顺便计数即可。


                
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值