4am33 2023-09-16 14:30 采纳率: 100%
浏览 23
已结题

蓝桥杯2022年第十三届省赛真题小问题求解

直接上图:

img

这是答案:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    long  a,b,n;
    long day=0;
    cin>>a>>b>>n;
    day+=(n/(a*5+b*2))*7;
    n%=(a*5+b*2);
        long tmp=(n<=a*5?n%a==0?n/a:n/a+1:ceil((n-a*5)/b)+5);
        day=day+tmp;
    cout<<day<<endl;
    return 0;
}

“long tmp=(n<=a*5?n%a==0?n/a:n/a+1:ceil((n-a*5)/b)+5);
        day=day+tmp;”,这一段代码我改写为“day+=(n<=a*5?n%a==0?n/a:n/a+1:ceil((n-a*5)/b)+5);”,但结果就是不通过,有大佬能为我解答吗?鼠鼠我真的想不会了..........
  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-16 16:03
    关注

    【以下回答由 GPT 生成】

    根据你的问题描述,你需要重新改写代码中的一段计算部分。具体来说,你需要修改原始代码中的 long tmp = (n<=a*5 ? (n%a==0 ? n/a : n/a+1) : ceil((n-a*5)/b)+5); 这一行代码。

    经过仔细阅读和分析你的问题,我发现问题出在使用 ceil 函数上。ceil 函数是向上取整的函数,但在你的代码中使用了 ceil 函数来计算 (n-a*5)/b 的值,这是不正确的。

    修改建议如下:

    day += (n <= a*5 ? (n % a == 0 ? n / a : n / a + 1) : (n - a*5 + b*2 - 1) / (a*5 + b*2) * 7 + (n - a*5 + b*2) % (a*5 + b*2) <= a*5 ? 1 : 2);
    

    修改后的代码使用了取余运算符 % 来计算 (n - a*5 + b*2) % (a*5 + b*2) 的值,并将结果与 a*5 进行比较,判断是否需要再加上 1

    同时,由于你提到了使用 ceil 函数,我假设你在使用的是 C++ 或类似的编程语言。上面给出的代码是使用了三目运算符 ? : 来替代了原始代码中的 ceil 函数。如果你使用的是其他编程语言,可以相应地进行一些语法上的调整。

    希望以上修改建议对你有所帮助。如果你还有其他问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月16日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?
  • ¥15 Ubuntu20.04.4.LTS系统如何下载安装VirtualBox虚拟机?
  • ¥15 如何用QDomDocument读取内容为空格的xml数据
  • ¥15 请阅读下面代码,帮我修改下代码
  • ¥15 关于#microsoft#的问题:电脑启动后不显示桌面图标和窗口,除任务栏外无法操作任何东西
  • ¥15 如何输入百度,显示本地下载的html文件页面,地址栏还显示百度的地址