当前位置:   article > 正文

蓝桥杯刷题统计

蓝桥杯刷题统计

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题?

对于 50% 的评测用例, 1≤a,b,n≤10^6.

对于 100% 的评测用例, 1≤a,b,n≤10^18.

下面是本人给出的答案,经测试可以通过100%的测试用例。

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. long long a, b, n;
  6. cin >> a >> b >> n;
  7. if (n / (5 * a + 2 * b) <= 1) //完成时间小于一周
  8. {
  9. for (int i = 1; i < 8; i++)
  10. {
  11. if ((i*a >= n)&&i<=5)
  12. {
  13. cout << i << endl;
  14. goto mark;
  15. }
  16. while (i > 5)
  17. {
  18. if (5 * a + (i - 5)*b >= n)
  19. {
  20. cout << i << endl;
  21. goto mark;
  22. }
  23. i++;
  24. }
  25. }
  26. }
  27. else //完成时间大于一周
  28. {
  29. long long cnt=0,num=0;
  30. cnt = n / (5 * a + 2 * b); //计算有几个完整的七天
  31. num = n - (5 * a + 2 * b)*cnt; //剩下的任务量,在一周内完成,可参考上述代码。
  32. for (int i = 0; i < 8; i++) //从0开始,要考虑到可能是一周的整数倍
  33. {
  34. if ((i*a >= num) && i <= 5)
  35. {
  36. cout << 7*cnt+i << endl;
  37. goto mark;
  38. }
  39. while (i > 5)
  40. {
  41. if (5 * a + (i - 5)*b >= num)
  42. {
  43. cout << 7*cnt+i << endl;
  44. goto mark;
  45. }
  46. i++;
  47. }
  48. }
  49. }
  50. mark:
  51. return 0;
  52. }

需要注意的是,应该考虑到存在答案是一周的整数倍的情况,所以else里面的for循环i应该从0开始,而不是和上面一样从1开始。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/734270
推荐阅读
相关标签
  

闽ICP备14008679号