1038:苹果和虫子

时间限制: 1000 ms    内存限制: 65536 KB

【题目描述】

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

【输入】

输入仅一行,包括n,x和y(均为整数)。

【输出】

输出也仅一行,剩下的苹果个数。

【输入样例】

10 4 9

【输出样例】

7

说明:

主要考查用编程解决数学问题。

不过这题存在一个问题,不知官方会不会修正,后面会讲述此问题。

思路分析:

用题目的样例,可以理解为有10个苹果,虫子每4小时吃掉一个苹果,经过9小时还有7个完整的苹果。

这题应注意题目的关键部分:第一个是剩余的是完整的苹果,那么被虫子咬了一口都不算完整;第二个是虫子在吃完一个苹果之前不会吃另一个。

数学的方法可以这么解:

10-9÷4=10-2.5=7.5

即还剩7.5个苹果,但完整的只有7个,那0.5个(半个)不算完整。所以输出的结果是7。

很明显,是把计算出的结果去掉小数部分,只剩整数部分。解决这一问题,只需强制转换为整型即可。不过在运算中存在除法时,要考虑数据类型问题,如果变量的类型都为整型时,那么9 / 4的结果为2,10 - 2的结果是8。下面用两种方法来解决这一问题:

变量都声明为double类型:

(整型)(n - y / x)

变量都声明为整型:

(整型)(n - 1.0 * y / x)

或者使用向上取整函数ceil。

不过这些方法的本质是一样的,都是让数据变为浮点型进行运算。

如果把变量声明为整型,因为此类问题不会存在负数,应该优先选择unsigned类型,而不是int。

易错点:

本题对于数据的说明并不严谨,如果y的值足够大,当y / x > n时,结果为负数。显然这是不可能的,这种问题不会存在负数的情况,就算苹果全被虫子吃光,结果也为0而已。

而本题属于顺序结构的题,按照学习阶梯来看,学生还没学if语句和条件运算符等知识点。

经过测试,提交后第4个测试点没有通过。想全部通过,一般还是要用if语句或条件运算符等。

所以,如果使用if语句,变量的类型应选择int或double,而不是unsigned。因为当y / x > n时,结果为负数,此时就可以通过if来判断了,而选择unsigned类型就不是那么方便了。

代码中会展示这两种方法。

求解过程:

声明3个unsigned类型变量n、x、y。输入3个整数给变量n、x、y。根据公式输出运算结果。

运行结果:

前一种方法结算的结果存在负数,所以有一个测试点没有通过。后一种方法使用了if条件语句,是把结果先保存在变量t中,如果变量t为负数,则让t变为0。int(n - y * 1.0 / x)这条语句的int可以去掉,因为这条语句的结果是赋给一个int类型变量t,会自动转换成int类型。

参考代码 - C++:

此代码有一个测试点没有通过。

#include <iostream>
using namespace std;
int main()
{unsigned n, x, y;cin >> n >> x >> y;cout << unsigned(n - y * 1.0 / x);return 0;
}

参考代码 - C语言:

此代码有一个测试点没有通过。

#include <stdio.h>
int main()
{double n, x, y;scanf("%lf %lf %lf", &n, &x, &y);printf("%u", (unsigned)(n - y / x));return 0;
}

1038:苹果和虫子相关推荐

  1. 信息学奥赛一本通1038 苹果与虫子 计蒜客C1 苹果与虫子

    时间限制:1000ms 内存限制:32767KB 题目描述: 蒜头君买了一箱 n 个苹果,很不幸的是买完时箱子里混进了一条虫子. 虫子每 x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个, ...

  2. *1038苹果和虫子

    1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int main() 5 { 6 int n,x ...

  3. 信息学奥赛一本通 1038:苹果和虫子 | OpenJudge NOI 1.3 15 | OpenJudge NOI 1.4 21

    [题目链接] ybt 1038:苹果和虫子 OpenJudge NOI 1.3 15:苹果和虫子 OpenJudge NOI 1.4 21:苹果和虫子2 [题目考点] 1. if-else语句 if( ...

  4. 信息学奥赛一本通(1038:苹果和虫子)

    1038:苹果和虫子 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 103230     通过数: 29352 [题目描述] 你买了一箱n个苹果,很不幸的是买完时 ...

  5. 【1038】苹果和虫子

    1038:苹果和虫子 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 119049     通过数: 34050 [题目描述] 你买了一箱n个苹果,很不幸的是买完时 ...

  6. 1038:苹果和虫子 题解 信息学奥赛 NOIP

    关于 内容来源于微信公众号:大神编程.已经过原文作者授权. 题目: 1038:苹果和虫子 超详细动画图文题解链接 题解目录(不断更新中) 喜欢信息学奥赛的同学们,可以一起交流学习哦 群名称:信息学奥赛 ...

  7. 苹果和虫子问题C++

    如果需要转载,请注明出处:http://www.cnblogs.com/wongyi/p/8205305.html 最近在给小朋友补奥数课,顺便看了几道题目,觉得写出来会比较集中,整理一下哈哈哈. 问 ...

  8. P5709 【深基2.习6】Apples Prologue 苹果和虫子(python3实现)

    https://www.luogu.com.cn/problem/solution/P5709 """P5709 [深基2.习6]Apples Prologue 苹果和虫 ...

  9. 1.4编程基础之逻辑表达式与条件分支 21 苹果和虫子2

    http://noi.openjudge.cn/ch0104/21/ /* 1.4编程基础之逻辑表达式与条件分支 21 苹果和虫子2 http://noi.openjudge.cn/ch0104/21 ...

  10. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质

    记录洛谷刷题QAQ,一些不大优雅的代码 一.[深基2.例7]数字反转 题目描述 输入一个不小于 100100100 且小于 100010001000,同时包括小数点后一位的一个浮点数,例如 123.4 ...

最新文章

  1. 研究能力培养的阶梯: 盐趣一对一科研项目
  2. BZOJ1861:[ZJOI2006]书架(Splay)
  3. 做人应该知道的十个道理
  4. BSS段 data段 text段 堆heap 和 栈stack
  5. Node.js 从门详解 (二)
  6. python 发邮件 动态html_python 邮件发送html文件
  7. Checkpoint--实现步骤
  8. jsp中能循环div吗_中药面膜安全靠谱吗?
  9. python 如何安装软件包故障_Python安装软件包出错
  10. php 变量类型 typeof,typeof和instanceof的区别是什么
  11. 图像处理结果的度量 —— SNR、PSNR、SSIM
  12. C++智能指针的实现与使用(详解)
  13. 应用层TCP三次握手及各种协议简介telnet【笔记】
  14. 这件小事,我坚持了 200 天
  15. 施一公:如何做一名优秀的博士生
  16. 个人所得税计算java版
  17. Jenkins Config File Provider 插件 创建kubeconfig文件
  18. hadoopsnappy解压_Hadoop的Snappy安装配置
  19. 应用使用Druid连接池经常性断链问题分析
  20. 做PPT总也做不好怎么办?掌握一些PPT制作小技巧

热门文章

  1. 消息总线VS消息队列
  2. chunxunnet
  3. 《富爸爸穷爸爸》书摘-为什么要教授财务知识
  4. 5分钟搭建私人Java博客系统——Tale
  5. Tomb.Finance的每周更新(5.16-5.22)「Harry大财主的每周二更新」
  6. [Mac] 为mac自带的QuickTime Player播放器设置快进快退
  7. MTK6577+Android之按键(key)修改
  8. 计算机硬盘启动设置方法,如何进入BIOS设置硬盘启动顺序|计算机BIOS硬盘启动设置方法...
  9. vscode插件 中文一键转英文并生成多种命名格式 提效神器
  10. js 获取 当前年月日以及农历日期和星期几