Zoe_yuyang 2018-12-13 08:12 采纳率: 50%
浏览 5733

新手求教:关于虫子吃苹果问题

苹果和虫子

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

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

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

【输入样例】
10 4 9
【输出样例】
7

可以通过ceil函数实现苹果的“完整”问题吗?程序运行时答案错误,求教

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{int n,x,y;
cin>>n>>x>>y;
if(y<=n*x) 
cout<<n-ceil(y/x)<<endl;
else
cout<<0<<endl;
return 0;
}
  • 写回答

1条回答

  • threenewbee 2018-12-13 09:19
    关注
    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int main()
    {int n,x,y;
    cin>>n>>x>>y;
    if(y<=n*x) 
    cout<<n-ceil(y/(float)x)<<endl;
    else
    cout<<0<<endl;
    return 0;
    }
    

    这个程序存在精度误差风险,比如说算出来y/x=1.0000001,那么按理说应该返回1,而ceil可能会返回2
    修改如下:

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    
    int myceil(float x)
    {
        if ((ceil(x)) != (ceil(x - 0.0001)))
            return ceil(x) - 1; //避免1.000001 -> 2
        else
            return ceil(x);
    }
    
    int main()
    {int n,x,y;
    cin>>n>>x>>y;
    if(y<=n*x) 
    cout<<n-myceil(y/(float)x)<<endl;
    else
    cout<<0<<endl;
    return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序