2022蓝桥杯B组初赛签到题

2031: [蓝桥杯2022初赛] 九进制转十进制

题目描述

九进制正整数(2022) 转换成十进制等于多少?
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

分类标签

入门题 模拟 进制转换

由题目可知,本题要求我们掌握进制的相互转换。如二进制转换十进制:

1011(2)=1*2^{0}+1*2^{1}+0*2^{3}+1*2^{4}

 =1+2+16=19(10)

同理,九进制转换十进制就是2022(9)=2*9^{0}+2*9^{1}+0*9^{2}+2*9^{3}=1478(10)

本人是直接手算,直接输出答案。

#include <iostream>
using namespace std;
int main()
{
	cout << 1478 << endl;
	return 0;
}

2032: [蓝桥杯2022初赛] 顺子日期 

题目描述

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。
顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。
例如20220123 就是一个顺子日期,因为它出现了一个顺子:123;
本题顺子的定义:i j k 是一个顺子,满足 i+1=j、j+1=k、i≥0
而20221023 则不是一个顺子日期,它一个顺子也没有。
小明想知道在整个2022年份中,一共有多少个顺子日期。
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

分类标签

入门题 枚举

读懂题意之后就可以进行解答了,我是直接手算,需要注意的是012也包含在顺子日期内。 

#include <iostream>
using namespace std;
int main()
{
	cout << 14 << endl;
	return 0;
}

当然这题也可以编程解答,参照y总的方法,学到了sprintf的用法 sprintf函数可以将数据打印到字符串中

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int months[]
{
	0,31,28,31,30,31,30,31,31,30,31,30,31
};//从0月开始依次枚举每个月份天数,2022年2月只有28天,作为辅助数组。
bool check(string str)
{
	for (int i = 0; i + 2 < str.size(); i++)//i+2防止越界
	{
		if (str[i + 1] == str[i] + 1 && str[i + 2] == str[i] + 2)
			return true;
	}
	return false;
}//判断是否为顺子日期
int main()
{
	int year = 2022, month = 1, day = 1;
	int res = 0;
	for (int i = 0; i < 365; i++)
	{
		char str[10];
		sprintf(str, "%04d%02d%02d", year, month, day);
		if (check(str))
		{
			res++;
			cout << str << endl;
		}
		day++;
		if (day > months[month])//与++day等效
		{
			day = 1;
			month++;
		}
	}
	cout << res << endl;
	return 0;
}

 输出结果:

20220120
20220121
20220122
20220123
20220124
20220125
20220126
20220127
20220128
20220129
20221012
20221123
20221230
20221231
14

如果是手算的可以对照一下。 

2033: [蓝桥杯2022初赛] 刷题统计

题目描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。
他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。
请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?

输入格式

输入一行包含三个整数a, b 和n.
50% 的评测用例:1 ≤ a, b, n ≤ 10^6;
100% 的评测用例:1 ≤ a, b, n ≤ 10^18。

输出格式

输出一个整数代表天数。

输入样例 复制

10 20 99

输出样例 复制

8

分类标签

基础题 数学

 一道考验数学思维的题,我们可以发现小明的做题数每一个星期一循环,所以可以以此来降低数据规模,接着我们可以依次枚举七天,也可以直接讨论。

直接讨论:


#include <iostream>
using namespace std;
int main()
{
    long long int a, b, n,s1,s2,day;
    cin >> a >> b >> n;
    s1 = n / (5 * a + 2 * b);
    day = s1 * 7;//每七天一循环
    s2 = n % (5 * a + 2 * b);//剩余的题数
    if (s2 <= a && s2) day++;
    else if (s2 > a && s2 <= 5 * a) {
        long long int s3 = s2 % a;
        s2 /= a;
        day += s2;
        if (s3) day++;
    }//讨论前5天
    if (s2 > 5 * a && s2 <= (5 * a + 2 * b))
    {
        day+=5;
        s2 -= 5 * a;
        if (s2 <= b) day++;
        if (s2 > b && s2 <= 2 * b) day += 2;
    }//讨论后2天
    cout << day << endl;
    return 0;
}

很长,麻烦,下面是循环后直接枚举。

#include <iostream>
using namespace std;
typedef long long LL;
int main()
{
	LL a, b, n;
	cin >> a >> b >> n;
	LL s = 5 * a + 2 * b;
	LL res = n / s * 7;//7天一循环
	n %= s;//剩余题数
	LL d[] = { a,a,a,a,a,b,b };
	for (int i = 0; n > 0; i++)
	{
		n -= d[i];
		res++;
	}//依次枚举算出剩余天数
	cout << res << endl;
	return 0;
}

简洁明了。 

2034: [蓝桥杯2022初赛] 修剪灌木 

题目描述

爱丽丝要完成一项修剪灌木的工作。
有 N 棵灌木整齐的从左到右排成一排。
爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。
爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。
当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。
直到修剪了最左的灌木后再次调转方向。然后如此循环往复。
灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。
在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

输入格式

一个正整数N ,含义如题面所述。
30%的测试数据:1<N≤10;
100%的测试数据:1<N≤10000。

输出格式

输出 N 行,每行一个整数,第 i 行表示从左到右第 i 棵树最高能长到多高。

输入样例 复制

3

输出样例 复制

4
2
4

分类标签

基础题 思维题

 每棵灌木要想长最高,必须在爱丽丝离他最远的时候,也就是可以到达他最左边或最右边。且爱丽丝往返,所以具有对称性。

#include <iostream>
using namespace std;
int main()
{
	int n; cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cout << 2 * (max(i-1,n-i)) << endl;//max左右两边的最大值
	}
	return 0;
}

前四题的题解。。。 

一个蒟蒻仔。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值