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

简介: 例如c发光,其他二极管不发光可以用来表达一种字符,这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。

门牌制作


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


#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;
} 


七段码


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


62c344578ea143308158d23c75bb3264.png


上图给出了七段码数码管的一个图示,数码管中一共有7段可以发光的二极管,分别标记为a,b,c,d,e,f,g。小蓝要选择一部分二极管(至少有一个)发光来表达字符,在设计字符的表达时,要求所有发光的二极管是连成一片的。


例如:b发光,其他二极管不发光可以用来表达一种字符。


例如c发光,其他二极管不发光可以用来表达一种字符,这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。


例如:a,b,c,d,e 发光,f,g 不发光可以用来表达一种字符。


例如:b,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。


请问,小蓝可以用七段码数码管表达多少种不同的字符?


这题应该用DFS搜索,由于是填空题,所以小编是直接排列组合解决的。


#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 的整数,表示一个学生的得分。


输出描述


输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。


#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次方。


#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;
}


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


32fcb6e25c2d4ea0920d8273377dc090.gif

相关文章
|
2月前
【九度 OJ 05】统计同成绩学生人数
【九度 OJ 05】统计同成绩学生人数
15 1
|
6月前
|
C语言
C语言---输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
C语言---输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
|
7月前
|
C++
成绩统计(蓝桥杯)
成绩统计(蓝桥杯)
教务系统以数组的方式输入6位同学的成绩,输出平均成绩(调用函数,结果保留两位小数)并分别按照成绩高低显示出每位同学的成绩状况。
教务系统以数组的方式输入6位同学的成绩,输出平均成绩(调用函数,结果保留两位小数)并分别按照成绩高低显示出每位同学的成绩状况。
|
机器学习/深度学习
蓝桥杯-成绩统计
蓝桥杯-成绩统计
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
PAT-2021年秋季考试 乙级 7-3 自定义判题程序 (20 分)
在每次允许插入、删除、修改一个字符的前提下,用最少的动作把一个字符串变成另一个字符串,是一道著名的可以用动态规划解决的问题。
121 0
|
关系型数据库
PTA 1080 MOOC期终成绩 (25 分)
对于在中国大学MOOC(www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。
112 0
PTA 1038 统计同成绩学生 (20 分)
本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。
86 0
PTA 1077 互评成绩计算 (20 分)
在浙大的计算机专业课中,经常有互评分组报告这个环节。
169 0
下一篇
DataWorks