c语言遍历文件内容_剑指信奥 | C 语言之信奥试题详解(四)

ef4272edd4732620793486412f118021.png

趣乐博思剑指信奥系列

趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 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 

No. 2 陶陶摘苹果 🌟

题目

题目描述

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

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

输入格式

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

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

输出格式

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

样例输入

100 200 150 140 129 134 167 198 200 111
110

样例输出

5

题解

题目分析

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

注意事项

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

解题过程

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

参考代码

#include 

No. 3 不高兴的津津 🌟

题目

题目描述

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

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

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

输入格式

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

输出格式

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

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

样例输入

5 3
6 2
7 2
5 3
5 4
0 4
0 6

样例输出

3

题解

题目分析

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

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

注意事项

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

解题过程

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

参考代码

#include 

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 考试普及组的第一题,经过这段时间的学习和练习,同学们把这道题作为一个检验这段时间学习成果的一份试卷吧!


「 剑指信奥系列 

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

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

e6c56df285b050eb02ce858d7a8b1d25.png


趣乐博思教育

遇见你更优秀的孩子

a7cc55e83046ab3dd3308d299e131b9c.png

‏r

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值