IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《2020年蓝桥杯C++b组》 -> 正文阅读

[数据结构与算法]《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++的时候顺便计数即可。

int syear,smonth,sday; //分别为结束年,月,日
int countday(int year,int month,int day){  //分别为开始的年月日
	int ans=0;
	int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	while(1){
		if(year==syear&&month==smonth&&day==sday){
			break;
		}
		day++;
		if(isleaf(year)&&month==2){
			if(day>mon[month]+1){
				month++;
				day=1;
			}
		}else{
			if(day>mon[month]){
				month++;
				day=1;
			}
		}
		if(month>12){
			month=1;
			year++;
		}
		ans++;
	}
	return ans;
}

此题代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool tian(int x) {
	return x%400==0||(x%4==0&&x%100!=0);
}
int main() {
	int sum=0;
	int y=2000,m=1,d=1,week=6;
	while(1) {
		if(week==1||d==1) {
			sum+=2;
		}else sum++;
		if(y==2020&&m==10&&d==1)
			break;
		if(tian(y)) {
			month[2]=29;
		} else month[2]=28;
		if(d==month[m]) {
			if(m==12){
				y++;
				m=1;
				d=1;
			}else{
				m++;
				d=1;
			}
		}else d++;
		if(week==7) week=1;
		else week++;
	}
	cout<<sum<<endl;
	return 0;
}

E- 成绩统计

【问题描述】
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。

【输入格式】
输入的第一行包含一个整数 n,表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

【输出格式】
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分四舍五入保留整数。

【样例输入】
7
80
92
56
74
88
100
0

【样例输出】
71%
43%

【评测用例规模与约定】
对于 50% 的评测用例,1 ≤ n ≤ 100。
对于所有评测用例,1 ≤ n ≤ 10000。
//这不就是送分题吗,需要西湖一四舍五入,可以转化为小数+0.5 然后取整

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x7fffffff
int main() {
	int n;
	cin>>n;
	int a[10005],x=0,y=0;
	for(int i=0; i<n; i++)
		cin>>a[i];
	for(int i=0; i<n; i++) {
		if(a[i]>=85)
			x++;
		if(a[i]>=60)
			y++;
	}
	int sum1=((double)x*100/n+0.5);
	int sum2=((double)y*100/n+0.5);
	cout<<sum2<<"%"<<endl;
	cout<<sum1<<"%"<<endl;
	return 0;
}

F-回文日期

【问题描述】
2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。
有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。
也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。
给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA 型的回文日期各是哪一天。

【输入格式】
输入包含一个八位整数 N,表示日期。

【输出格式】
输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

【样例输入】
20200202

【样例输出】
20211202
21211212

【评测用例规模与约定】
对于所有评测用例,10000101 ≤ N ≤ 89991231,保证 N 是一个合法日期的 8 位数表示。
//自己之前在牛客上做过类似的题目,就打算用暴力过一下,结果芭比Q了,一个都没有过
代码如下

#include<iostream>
#include<algorithm>
using namespace std;
int m[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){
	int a,b;
	cin>>a>>b;
	int c,d,count=0;
	for(int i=1;i<=12;i++){
		for(int j=1;j<=m[i];j++){
			c=(j%10)*1000+(j/10)*100+(i%10)*10+i/10;
			d=c*10000+i*100+j;
			if(d>=a&&d<=b)
			count++;
		}
	}
	cout<<count<<endl;
	return 0;
} 

总结

摆烂了最近,明天补题。。。。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:50:27  更:2022-03-15 22:53:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:27:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码