🏝️专栏: 【蓝桥杯备篇】
🌅主页: f狐o狸x
从今天开始,笨狐狸,啊呸,本狐狸要开始漫长的蓝桥杯备战啦,将会长期更新每日一题这个专栏,直到蓝桥杯结束,各位一起加油吧~
12.18
一、[蓝桥杯 2022 省 B] 刷题统计
链接:P8780 [蓝桥杯 2022 省 B] 刷题统计 - 洛谷 | 计算机科学教育新生态
题目描述:小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
1 解题思路
这题不难,只需要注意工作日+a,周末+b就好啦
2 解题代码
#include <stdio.h>
int main()
{
long long int a = 0, b = 0, n = 0;
scanf("%lld %lld %lld", &a, &b, &n);
long long int count = 1;
long long int sum = 0;
while (sum < n)
{
if (count % 7 <= 5 && count % 7 > 0)
sum += a;
else
sum += b;
count++;
}
printf("%lld", --count);
return 0;
}
注:不是最优解,近期期末忙着速成,最优解以后关系
12.20
一、[蓝桥杯 2024 省 B] 好数
题目链接:P10424 [蓝桥杯 2024 省 B] 好数 - 洛谷 | 计算机科学教育新生态
题目描述:一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。
给定一个正整数 NN,请计算从 11 到 NN 一共有多少个好数。
1. 解题思路
逐个遍历、判断,是“好数”就+1,不是就继续遍历
2.解题代码
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0, ret = 0;
for (i = 1; i <= n; i++)
{
int j = i;
int k = 1;
int count = 1;
while (j)
{
if (count % 2 != j % 2)
{
k = 0;
break;
}
count++;
j /= 10;
}
if (k == 1)
ret++;
}
printf("%d", ret);
return 0;
}
12.22
一、[蓝桥杯 2021 省 B2] 特殊年份
题目链接:P8752 [蓝桥杯 2021 省 B2] 特殊年份 - 洛谷 | 计算机科学教育新生态
题目描述:今年是 2021 年,2021 这个数字非常特殊, 它的千位和十位相等, 个位比百位大 1,我们称满足这样条件的年份为特殊年份。
输入 5 个年份,请计算这里面有多少个特殊年份。
1. 解题思路
这个题我们只需要把每次输入进去的年份的每一位都提取出来,在按照题目要求计数就行了
2. 解题代码
#include <stdio.h>
int main()
{
int input[5][4] = {0};
int arr[5] = { 0 };
int i = 0;
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < 5; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
input[i][j] = arr[i] % 10;
arr[i] /= 10;
}
}
int count = 0;
for (i = 0; i < 5; i++)
{
if (input[i][1] == input[i][3] && input[i][2] + 1 == input[i][0])
count++;
}
printf("%d", count);
return 0;
}
12.24
一、[蓝桥杯 2022 国 C] 斐波那契数组
题目链接:P8808 [蓝桥杯 2022 国 C] 斐波那契数组 - 洛谷 | 计算机科学教育新生态
题目描述:
1. 解题思路
我的想法是先利用循环实现斐波那契数列,再然后依次和原数组比较,这样就可以得到最少的修改次数
2. 解题代码
#include <stdio.h>
int main()
{
int input = 0;
scanf("%d", &input);
int a[100000] = { 0 };
int i = 0;
for (i = 0; i < input; i++)
{
scanf("%d", &a[i]);
}
int count = 0;
int fib = 1;
int prev = 1;
for (i = 0; i < input; i++)
{
if (i < 2)
{
fib = 1;
prev = 1;
}
else
{
int mid = fib;
fib += prev;
prev = mid;
}
if (a[i] != fib)
{
count++;
}
}
printf("%d", count);
return 0;
}