前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【蓝桥OJ】门牌制作、七段码、成绩统计、分数

【蓝桥OJ】门牌制作、七段码、成绩统计、分数

作者头像
颜颜yan_
发布2023-02-26 15:10:06
5210
发布2023-02-26 15:10:06
举报
文章被收录于专栏:颜颜yan_的学习笔记

文章目录


门牌制作

小蓝要为一条街的住户制作门牌号。这条街一共有 2020位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。请问要制作所有的 1 到2020 号门牌,总共需要多少个字符 2?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
int main(){
	int i;
	int count = 0;
	for(i = 1;i<2021;i++){
		for(int j=i;j>0;j = j/10){
			if(j%10==2){
				count++;
			}
		}
	
	}
	printf("%d",count);
	return 0;
} 

七段码

小蓝要用七段码数码管来表示一种特殊的文字。

上图给出了七段码数码管的一个图示,数码管中一共有7段可以发光的二极管,分别标记为a,b,c,d,e,f,g。小蓝要选择一部分二极管(至少有一个)发光来表达字符,在设计字符的表达时,要求所有发光的二极管是连成一片的。 例如:b发光,其他二极管不发光可以用来表达一种字符。 例如c发光,其他二极管不发光可以用来表达一种字符,这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。 例如:a,b,c,d,e 发光,f,g 不发光可以用来表达一种字符。 例如:b,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。 请问,小蓝可以用七段码数码管表达多少种不同的字符? 这题应该用DFS搜索,由于是填空题,所以小编是直接排列组合解决的。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
int main(){
	int count = 0;
	int l1,l2,l3,l4,l5,l6,l7;
//	一个二极管发光:a,b,c,d,e,f,g
	l1 = 7;
//	2个二极管发光,排除组合后相同的形状:ab,ac,af,bc,be,bg,ce,cf,df,dg
    l2 =  10;
//    3个二极管发光,排除组合后相同的形状:abc,abd,abe,abf,abg,acd,ace,acg,adg,afg,bcd,bce,beg,bfg,cfg,efg
l3 = 16;
//4个二极管发光,等同于灭3个二极管
l4 = 20;
l5 = 19;
l6 = 7;
l7 =1;
count = l1 + l2 + l3 + l4 + l5 + l6 + l7;
printf("%d\n",count); 
	return 0;
}

成绩统计

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。 输入描述 输入的第一行包含一个整数 n (1≤n≤10^4 ),表示考试人数。接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。 输出描述 输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  int num=0; //考试人数
  int arr[100001]={0};//考试成绩数组
  int jg=0,yx=0;//定义及格和优秀的人数
  scanf("%d",&num); //输入考试人数
  for(int i = 0;i<num;i++){ 
    scanf("%d",&arr[i]); //输入成绩数组
    if(arr[i]>=60)
    jg++; //如果第i个学生的成绩大于等于60,则及格人数增加
    if(arr[i]>=85)
    yx++; //如果第i个学生的成绩大于等于85,则优秀人数增加
  }
  printf("%.0f%\n",(jg*100)/(num*1.0)); //输出及格率,.0f保证四舍五入
  printf("%.0f%\n",(yx*100)/(num*1.0)); //输出优秀率
  return 0;
}

分数

1/1+1/2+1/4+1/8+… 每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。 类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。

思路: 先用等比数列求和公式进行计算,即n=20,公比q=1/2,前n项和为S=[a1(1-q^n)]/(1-q)。代入计算结果为(2 ^20 -1)/(2 ^19)。所以分子为2 ^20-1,分母为2 ^19。 知识点: C语言的pow函数:使用pow函数需要引入头文件#include <math.h>,pow(a,b)意思为计算a的b次方。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
  int fenzi=pow(2,20)-1;
  int fenmu=pow(2,19);
  printf("%d/%d",fenzi,fenmu);
  return 0;
}

总结

以上就是今天的学习内容啦~ 咱们下期再见~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 门牌制作
  • 七段码
  • 成绩统计
  • 分数
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档