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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题