【比赛题解】第十一届蓝桥杯青少组省赛(中级组)详细题解

目录

前言

一、双面打印

题目描述

样例输入

样例输出

评分标准 

题目解析 

AC代码1

AC代码2 

二、求完数

题目描述

样例输入 

样例输出 

评分标准 

题目解析 

AC代码 

三、求阴影面积

题目描述

样例输入

样例输出

评分标准

题目解析

AC代码 

四、选择题判定

题目描述

样例输入

样例解释 

样例输出

评分标准

题目解析

AC代码

五、节气

题目描述

样例输入

样例输出

评分标准

题目解析1

AC代码1

题目解析2

AC代码2 

六、垃圾分类

题目描述

样例输入

样例输出

评分标准

题目解析

AC代码

结束语


前言

       大家好,这是我发布的第一个题解,请大家耐心观看,每一段代码都配有详细的注释。其中,我也会讲解解题思路,满满的干货。

一、双面打印

题目描述

       在 2020 年这个漫长的寒假里,虽然小蓝和他的同学们都在家里,但依旧通过网课的方式坚持学习,而老师们也依旧会布置作业和发放各种电子版的学习资料。为了方便小蓝的学习,妈妈会把老师发放的材料打印出来。而为了环保﹐妈妈一般都进行双面打印,也就是一张纸的正反面都打印出相应的内容。举个例子来说:如果一份电子材料有 3 页,那么需要 2 张纸进行打印;如果一份电子材料有 4 页,那么还是需要 2 张纸进行打印。现在已经知道了一份电子版的学习材料的页数 N,你能帮小蓝计算一下需要几张纸吗?

       输入描述∶整数 N ( O≤N≤1000 ),代表一份电子版的学习材料的页数。
       输出描述∶双面打印所需纸的张数。

样例输入

7

样例输出

4

评分标准 

10 分:能正确输出一组数据;
20 分:能正确输出两组数据;
20 分:能正确输出三组数据。

题目解析 

       这道题很简单,输入需要打印的页数,可以用int形定义,输出打印页数/2+打印页数%2;也可以用double形定义,输出打印页数除以2并上去整。这里考的重点是数据类型的运用,因此我们需要特别注意。

AC代码1

#include<iostream>//调用输入输出流头文件
using namespace std;//使用标准名字空间
int N,ans;//定义整数类型变量N,ans,代表单面打印的页数和双面打印的页数
int main(){//主函数开始
    cin>>N;//输入N的值
    ans=N/2+N%2;//将ans赋值为N除以2加N模2
    cout<<ans;//输出ans的值
    return 0;//主函数结束,返回0
}

AC代码2 

#include<iostream>//调用输入输出流头文件
#include<cmath>//调用数学函数头文件
using namespace std;//使用标准名字空间
double N,ans;//定义浮点数类型变量N,ans,代表单面打印的页数和双面打印的页数
int main(){//主函数开始
    cin>>N;//输入N的值
    ans=ceil(N/2);//将ans赋值为N除以2上取整
    cout<<ans;//输出ans的值
    return 0;//主函数结束,返回0
}

二、求完数

题目描述

         因子∶因子也叫因数,例如 3*5=15,那么 3 和 5 是 15 的因子。同时 15*1=15,那么 1 和15 也是 15 的因子。1,3 ,5,15 这四个因子是 15 的所有因子。完数:如果一个数等于不含它本身的其他因子之和,则称该数为‘完数'。如 6 的因子有 1,2,3 ,6,且 1+2+3=6,因此 6 是完数。

         输入一个正整数 N(0<N<10000 ) ,输出小于 N 的所有完数及小于 N 的完数个数(个数前加“*”,例如:*2 ) 。

         输入描述:输入一个正整数 N(O<N<10000 )

         输出描述:输出小于 N 的所有完数及小于 N 的完数个数

样例输入 

100

样例输出 

6
28
*2

评分标准 

20 分:能正确输出一组数据;
10 分:能正确输出两组数据;
20 分:能正确输出三组数据;
20 分:能正确输出四组数据。

题目解析 

       这里用一个函数y来记录判断一个数是否是完数的过程,其中,第一个for循环是为了找到形参n除自己外的所有因数,保存在数组re里,并使用一个变量com_来记录re的下一个操作相应元素号。

       接着,将re的所有储存了变量元素都统计在ans里,判断得出结果。

       这样,在main里面就很简单了,声明一下函数(其实可以省略),在for循环带入,这一道题算是解出来了。但注意题目要求最后输出*数量,用printf语句就行。

AC代码 

#include<iostream>//调用输入输出流头文件 
#include<cstdio>//调用C语言标准输入输出流头文件 
using namespace std;//使用标准名字空间 
bool y(int n){//定义函数y,参数n为整数类型,返回值为布尔类型 
	int re[1009],com_=0,ans=0;//定义数组re,包含1009个整数类型变量,定义整数类型变量com_.ans并初始化赋值为0 
	for(int i=1;i<n;i++){//for循环,计数器i从1自增到n-1,共循环n-1次 
		if(n%i==0){//如果n能被i整除 
			re[com_]=i;//将re的com_号元素赋值为i 
			com_++;//com_自增1 
		} 
	}for(int i=0;i<com_;i++){//for循环,计数器i从0自增到com_-1,共循环com_次 
		ans+=re[i];//ans自增re的i号元素 
	}if(ans==n){//如果ans等于n 
		return true;//返回真 
	}return false;//返回假 
}
int main(){//主函数开始 
	bool y(int n);//声明函数y,参数n为整数类型,返回值为布尔类型  
	int n,ans=0;//定义整数类型变量n,ans并初始化赋值为0 
	cin>>n;//输入n的值 
	for(int i=1;i<n;i++){//for循环,计数器i从1自增到n-1,共循环n-1次 
		if(y(i)){//如果y(i)为真 
			ans++;//ans自增1 
			cout<<i<<endl;//输出i的值 
		} 
	}printf("*%d",ans);//格式化输出*ans 
	return 0;//主函数结束,返回0 
}

三、求阴影面积

题目描述

        用户输入一个正整数 a (0<a<100 ) ,作为如图半圆的直径,同时作为如图等腰直角三角形的直角边长度,求下图的阴影部分面积,如下所示∶

        提示信息:
        三角形面积公式:S=(ah)/2(公式中 a 为三角形的底边, h 为底边所对应的
高) 圆形面积公式:S=πr2(公式中 r 为圆的半径,π= 3.14 )

        已知条件:
半圆的直径和等腰直角三角形直角边长度相同;三角形与半圆部分重叠;

样例输入

10

样例输出

25.00

评分标准

20

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值