【信息奥赛一本通】1038:苹果和虫子

 【题目描述】

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

【输入】

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

【输出】

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

【输入样例】

10 4 9

【输出样例】

7

【算法分析】

        虫子x小时吃掉一个苹果则可知y小时可以吃掉 \frac{y}{x} 个,但是如果求得的数为小数就说明存在一个苹果已经被虫子吃但是未吃完,已经是不完整的。则应该对 \frac{y}{x} 进行向上取整,然后使用n减掉取整得到的数,但是此题中需要判断求得结果的正负。

【源代码】

方法一:使用if....else....语句进行判断

#include<bits/stdc++.h>
using namespace std;
int main()
{
	double n, x, y, rest;
	cin >> n >> x >> y;
	rest = ( n - ceil( y / x ) );
	if( rest < 0 )
		cout << 0;
	else
	cout << rest;
	return 0;
}

方法二:使用max(int a,int b);进行判断

#include<bits/stdc++.h>
using namespace std;
int main()
{
	double n, x, y, rest;
	cin >> n >> x >> y;
	rest = ( n - ceil( y / x ) );
	cout << max(0,int(rest));
	return 0;
}

【知识点小结】

 知识点一:ceil( )

    C++<cmath>库中提供的函数 ,ceil( )可以进行向上取整例如:ceil(3.5)=4; ceil(-3.5) =-3;

 知识点二:max(int a, int b);

    此函数的功能为求两个数中最大的值进行输出,max(a,b)函数中的两个参数必须为int型,例如:max(0,2)=2;  max(0,-1)=0;

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值