趣乐博思剑指信奥系列

趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案。开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详解等系列课程。面向10 - 16 岁少儿的编程教育,培养扎实的 C++ 语言基础,灵活运用算法的能力,分析解决问题的能力。

剑指信奥 | C 语言之信奥试题详解(四)

前言

今天是我们 C 语言详解信奥试题的第四天,也是整个 C 语言系列的最后一天。

从 2022 年起,信息学竞赛的参赛语言将从现在的 C++、C 和 Pascal 三门变为一门,就是 C++。

C++ 是一门非常强大的语言,它是 C 语言的超集,C 语言中的基础语法与 C++ 大致相同。

我们先学 C 语言是为了学习 C++ 奠定基础,然后再学习 C++ 中增加的那一部分理论内容。

No. 1 质因数分解 ?

题目

题目描述

已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。

输入格式

一个正整数 n。

输出格式

一个正整数 p,即较大的那个质数。

样例输入

21

样例输出

7

数据范围

n ≤ 2×10^9

题解

题目分析

这道题的解答非常的简短,但前提我们要做充足的分析。

首先要知道什么是质数:

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数

Wikipedia

根据这个定义,诸如 3,5,7,11 ... 等都是素数。

看似不难,但在数学上有非常著名的关于质数的猜想,其中之一就是哥德巴赫猜想:

哥德巴赫猜想:该猜想认为每个大于 2 的偶数 n 都可表示成两个质数之和

还有黎曼猜想,至今都尚未解决。

好啦,知道了质数的定义,我们重点关注题目描述中的这句话:

正整数 n 是两个不同的质数的乘积

既然这个正整数是两个质数的乘积,意味着这个数只能分解为这两个质数的乘积(思考:为什么?)

想到这,问题就迎刃而解了。

注意事项

  1. 数学上定义,1 不是素数,循环起始于 2

解题过程

  1. 从 2 到 n - 1 做循环
  2. 第一个能整除 n 的数就是较小的质数
  3. 使用除法求得较大的质数并输出

参考代码

#include 

int main() {

int n;

scanf("%d", &n);

for (int i = 2; i < n; i++) {if (n % i == 0) {printf("%d", n / i);break;        }    }

return 0;}

No. 2 陶陶摘苹果 ?

题目

题目描述

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式

输入包括两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200 )的整数(以厘米为单位)分别表示 10 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。

第二行只包括一个 100 到 120 之间(包含 100 和 120 )的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式

输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

样例输入

100 200 150 140 129 134 167 198 200 111110

样例输出

5

题解

题目分析

这是一道比较简单的题,考察的就是陶陶的身高加上板凳的高度,这个数值不小于第一行里的多少个数

注意事项

  1. 数组元素接收数值的方法

解题过程

  1. 把第一行 10 个数字存入一个数组
  2. 遍历数组,计算数量并输出

参考代码

#include 

int main() {

int apples[10];int high, sum = 0;

for (int i = 0; i < 10; i++) {scanf("%d", &apples[i]);    }

scanf("%d", &high);

for (int i = 0; i < 10; i++) {if (high + 30 >= apples[i]) {            sum++;        }    }

printf("%d", sum);

}

No. 3 不高兴的津津 ?

题目

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式

输入包括 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式

一个数字。如果不会不高兴则输出 0,如果会则输出最不高兴的是周几(用 1, 2, 3, 4, 5, 6, 7 分别表示周一,周二,周三,周四,周五,周六,周日)。

如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

样例输入

5 36 27 25 35 40 40 6

样例输出

3

题解

题目分析

同样是一道比较简单的题目。

需要思考的是怎样做才能实现比较简洁的代码。

注意事项

  1. 不要忘了输出 0 的情况

解题过程

  1. 对每次输入的 m 和 n 进行判断
  2. 存储最大值和星期数
  3. 输出

参考代码

#include 

int main() {int m, n, day, max = 0;

for (int i = 0; i < 7; i++) {scanf("%d %d", &m, &n);if (m + n > max && m + n > 8) {            max = m + n;            day = i + 1;        }    }

printf("%d", day);

return 0;}

No. 4 文具订购??

题目

题目描述

小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品:

  1. 圆规,每个 7 元。2.笔,每支4元。
  2. 笔记本,每本 3 元。

小明负责订购文具,设圆规,笔,笔记本的订购数量分别为 a,b,c,他订购的原则依次如下:

  1. n 元钱必须正好用光,即 7a+4b+3c=n。
  2. 在满足以上条件情况下,成套的数量尽可能大,即 a,b,c 中的最小值尽可能大。
  3. 在满足以上条件情况下,物品的总数尽可能大,即 a+b+c 尽可能大。

请你帮助小明求出满足条件的最优方案。可以证明若存在方案,则最优方案唯一。

输入格式

从文件 order.in 中读入数据。仅一行一个整数 n 表示班费数量。

输出格式

输出到文件 order.out 中。若方案不存在则输出 -1。否则输出一行三个用空格分隔的非负整数 a,b,c 表示答案。

样例 1 输入

1

样例 1 输出

-1

样例 2 输入

1

样例 2 输出

-1

样例 3 输入

1

样例 3 输出

-1

样例 3 解释

a=2,b=4,c=1 也是满足条件 1,2 的方案,但对于条件 3,该方案只买了 7 个物品,不如 a=1,b=2,c=6 的方案。

数据范围

对于测试点 1 ∼ 6:n ≤ 14。

对于测试点 7 ∼ 12:n 是 14 的倍数。

对于测试点 13 ∼ 18:n ≤ 100。

对于所有测试点 0 ≤ n ≤ 105。

时间限制

1.0 s

空间限制

256 MB

题解

这道题是今天 NOI Online 考试普及组的第一题,经过这段时间的学习和练习,同学们把这道题作为一个检验这段时间学习成果的一份试卷吧!


「 剑指信奥系列 

从零开始,进阶信息学奥林匹克竞赛

清华计算机系哥哥专业讲解


趣乐博思教育

遇见你更优秀的孩子

‏r

如果您喜欢 趣乐博思教育,请关注我们的公众号,发现您更优秀的孩子!

如果您从这篇文章有所收获,请点亮下方 在看,或转发到朋友圈,谢谢!

c语言 read 文件字节没超过数组大小时会怎样_剑指信奥 | C 语言之信奥试题详解(四)...相关推荐

  1. c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!

    趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...

  2. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  3. mybatis 鉴别其_MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询

    MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询 白玉 IT哈哈 支持的 JDBC 类型 为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 ...

  4. c语言读取文件字节数,怎么在C语言中利用fstat函数获取文件的大小

    怎么在C语言中利用fstat函数获取文件的大小 发布时间:2021-01-22 17:03:17 来源:亿速云 阅读:110 作者:Leah 怎么在C语言中利用fstat函数获取文件的大小?针对这个问 ...

  5. c语言 不同的io口组成数组,本章内容并行IO口电路结构认识C语言C语言基本语句C语.ppt...

    本章内容并行IO口电路结构认识C语言C语言基本语句C语 并行I/O口电路结构 P0口的结构 P0口的结构 P0口的结构 P1口的结构 P1口的结构 P2口的结构 P2口的结构 P3口的结构 P3口的结 ...

  6. C语言高级编程:sizeof计算数组大小需要注意的问题

    测试平台:64位 X86 Ubuntu 1. 代码: #include <stdio.h>void main(void) {char a[20];printf("sizeof(a ...

  7. 统计数组中每个数字出现的次数_剑指Offer(二十八) 数组中次数出现超过一半的数字...

    题目描述 思路与解析 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长 ...

  8. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  9. 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

最新文章

  1. 自然语言处理NLP基本知识小结
  2. spring boot(一)创建项目
  3. hdu4560 不错的建图,二分最大流
  4. 《树莓派开发实战(第2版)》——2.8 利用VNC远程控制树莓派
  5. textarea 聚焦后边框_textarea焦点的用法实现获取焦点清空失去焦点提示效果
  6. 1.3.1 操作系统的运行机制和体系结构(大内核、小内核)
  7. winfrom软件开发汽车测试_ETci — 全自动软件测试调度(持续集成)平台
  8. TabLayout+Fragment+ViewPager+FragmentStatePagerAdapter实现Tab标签
  9. Linux 运维人最常用 150 个命令汇总
  10. matlab打开figure2,matlab figure2无法输出图形
  11. swiper监听滚动条_swiper Scrollbar滚动条组件详解
  12. python解释器的使用
  13. Java_cookie 和session 的区别详解
  14. c#解析json字符串数组_在C#中解析Json字符串
  15. 微信扫一扫门禁开门小程序开发制作
  16. IXI MEGA声卡M4 6 8 PIUS M2 M-NU2 NU4安装调试教程
  17. linux node安装菜鸟教程,Docker 安装 Node.js
  18. asp.net验证码【潇潇雨兮】
  19. 英国高端SPA级奢养护肤品牌EVE LOM相继入驻成都IFS、北京连卡佛;FILA斐乐携手梵高博物馆推出全新联名系列 | 知消...
  20. 一年半,从编程都不懂的小白到成功入职!

热门文章

  1. opencv摄像头速度慢_c++ - 从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。 - SO中文参考 - www.soinside.com...
  2. 帝国cms如何安装php模板,2020帝国cms模板安装教程详细介绍
  3. python opencv 摄像头_python+opencv实现摄像头调用的方法
  4. zabbix mysql 脚本路径_Zabbix监控MySQL脚本
  5. java打印结果横向排列_Java8排列组合(6行代码实现)
  6. python 路径格式化_Python Black 一键格式化美化代码
  7. java extends原则_Java泛型extends及super区别实例解析
  8. web 服务器 内存 影响_工业环境软件套件 CODESYS web 服务器被曝严重的RCE漏洞
  9. post get mysql_jQuery – AJAX get() 和 post() 方法 | 菜鸟教程
  10. redis 系列17 持久化 AOF