01 卡片
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1拼到多少?
提示:建议使用计算机编程解决问题。
解析
c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int arr[10];
for (i = 0; i < 10; i++) {
arr[i] = 2021; // 记录0-9这10张卡片的数量,开始都是2021张
}
for (i = 1;; i++) { // 由于不知道到i的边界值,省略,会一直执行
int x = i; // 用x来存放每一个i的值,防止i值的改变
while (x) {
if (arr[x % 10] == 0) { // 当有一张卡片的数量剩余为0张的时候,输出前一个i的值,也就是i-1,并退出
printf("%d\n", i - 1);
exit(0);
}
arr[x % 10]--; // 每一张卡片数量减少1
x /= 10;
}
}
return 0;
}
02 最短路
cpp
#include <stdio.h>
#include <stdlib.h>
int main()
{
// 一眼丁真,鉴定为6
printf("%d",6);
return 0;
}
03 跑步锻炼
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
解析
cpp
#include<stdio.h>//依次判断年月日周
int main(){
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
int ans=6;//一月一号是周六
int cnt=0;//公里数
for(year=2000;year<=2020;year++){
if(year%4==0&&year%100!=0||year%400==0){
months[2]=29;
}else{
months[2]=28;
}
for(month=1;month<=12;month++){//几月
for(day=1;day<=months[month];day++){//几日
cnt++;//每天一千米
if(ans==8){
ans=1;//ans自增到 8 时归回 1
}
if(ans==1||day==1){//或意味着A对,B对,AB同时对三种情况
cnt++;//周一或月初或周一与月初多跑一千米
}
ans++;//进入第二天
if(year==2020&&month==10&&day==1){//到2020.10.1结束循环
printf("%d",cnt);
}
}
}
}
return 0;//一点一点来不要怕错
}
04 九进制转十进制
解析
cpp
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,b,c,d,e;
int sum;
a=2022;
b=a/1000;
c=a/100%10;
d=a/10%10;
e=a%10;
sum=pow(9,3)*b+pow(9,2)*c+pow(9,1)*d+pow(9,0)*e;
printf("%d",sum);
// 请在此输入您的代码
return 0;
}
05 纸张尺寸
问题描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。
输入纸张的名称, 请输出纸张的大小。
输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
样例输入1
c
A0
样例输出1
cpp
1189
841
样例输入 2
cpp
A1
样例输出 2
cpp
841
594
解析
c
#include<stdio.h>
int main()
{
char n;
int x,a=1189,b=841,t;
scanf("%c%d",&n,&x);
while(x--)
{
a=a/2;
t=a;
a=b;
b=t;
}
printf("%d\n%d",a,b);
return 0;
}
06 MP3 储存【蓝桥杯填空题示例题目】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个 MP3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 MP3 文件?
正确解法
本题正确答案为 25600,只需要在代码中使用输出语句输出即可,各语言示例如下:
C
c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
printf("25600");
return 0;
}
C++
c
#include <iostream>
using namespace std;
int main()
{
cout<<25600<<endl;
return 0;
}
Java
c
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(25600);
scan.close();
}
}
Python
c
import os
import sys
print(25600)
解析
c
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int a=100*1024;
cout<<a/4;
return 0;
}
07 门牌制作
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,22 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
解析
cpp
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int num=0;
for(int i=1;i<=2020;i++){
if(i%10==2) num++;
if(i/10%10==2) num++;
if(i/100%10==2) num++;
if(i/1000==2) num++;
}
cout<<num;
return 0;
}
08 奇数倍数
解析
c
#include <stdio.h>
#include <stdlib.h>
int js(int x){
while(x>0)
{
if(x%10%2==0)return 0;
x/=10;
}
return 1;
}
int main(){
int ans=2019;
for(ans;;ans+=2019)
if(js(ans)){
printf("%d",ans);break;
}
return 0;
}
09 第几天
cpp
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
printf("%d",31+29+31+30+4);
return 0;
}
10 倍数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数倍。
解析
cpp
#include <iostream>
using namespace std;
int main()
{
int j = 0,i;
for(i = 12;i <= 2020;)
{
j ++;
i = (j+1)*12;
}
cout << j << endl;
return 0;
}