P1424 小鱼的航程(改进版)
  TEZNKK3IfmPf 2023年11月15日 36 0
C

题目描述

有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?

输入输出格式

输入格式:

输入两个整数x,n(表示从周x算起,经过n天,n在long int范围内)。

输出格式:

输出一个整数,表示小鱼累计游泳了多少公里。

 

最开始时候的做法,

方法很简单,算出有多少周(n/7),然后判断剩下的日子工作了多少天。

#include <iostream>
int main()
{
  int x, n;
  std::cin >> x >> n;
  int d = n / 7 * 5;
  int r = n % 7;
  if (r > 0) 
  {
    if (r + x == 7) 
      r -= 1;
    else if (r + x >= 8) 
      r -= 2;
  }
  std::cout << (d + r) * 250 ;
  return 0;
}

结果提交测试时候出现了一个错误,

在看了别人的答案后发现了问题---计算剩下的日子中工作日子出现了问题。

对于周1~周6,原来的方法是没有问题的,

但是周7时,就会出错。原因是周7的时候r不能-2,因为此时周6已经过去了,不能再向前面一样减去周6.

将周7作为特例考虑,周7时,r-=1,(减去周日即可)。

 if (r > 0) 
  {
    if (r + x == 7 || x == 7) 
      r -= 1;
    else if (r + x >= 8) 
      r -= 2;
  }

从这个题目中可以学到,使用条件判断(if)时候,要考虑周全,最好多考虑几个特例,比如边界,中间等等。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   64   0   0 C编程开发
  TEZNKK3IfmPf   2023年11月14日   27   0   0 算法C
  TEZNKK3IfmPf   2023年11月14日   26   0   0 C编程开发
  TEZNKK3IfmPf   2023年11月14日   36   0   0 数组C
  TEZNKK3IfmPf   2023年11月14日   25   0   0 Cpoj
  TEZNKK3IfmPf   2023年11月14日   42   0   0 运算符重载C
  TEZNKK3IfmPf   2023年11月14日   27   0   0 C
  TEZNKK3IfmPf   2023年11月15日   37   0   0 C
  TEZNKK3IfmPf   2024年03月22日   72   0   0 C++C
TEZNKK3IfmPf