申请增加题解
  • 板块工单反馈版
  • 楼主lanzong
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/12/7 21:44
  • 上次更新2023/11/5 06:26:32
查看原帖
申请增加题解
415928
lanzong楼主2020/12/7 21:44

P1424的,可能比较水,但是没有用这种一句话的,谢谢管理员

这道题目可以用数学表达式的方法解。

不需要任何循环,时间复杂度最低。

核心要点就是求出小鱼游的天数。

#include <stdio.h>
int main()
{
    int x,n,day;
    scanf("%d%d",&x,&n);
    day=8-x-(x<7?2:1)+(n-(8-x)-((n-8+x+1)/7)-((n-8+x)/7));
    printf("%d",day*250);
    return 0;
}

总体思路就是将时间段分为两段:

第一段是第一周(可能不完整的一周)到周末,第二段是第二周周一开始到结束

解释表达式的各段:

x:周几

n:总天数

8-x-(x<7?2:1) 第一段时间游的天数(第一剩余天数减去休息日,三目运算符目的是判断休息日是几天)

n-(8-x) 从第二周开始计算的剩余所有天数

(n-8+x+1)/7 周六共有多少次

(n-8+x)/7 周日共有多少次

n-(8-x)-((n-8+x+1)/7-((n-8+x)/7) 第二段时间游的天数

将两段时间游的天数相加为总天数,总天数*250即为答案

当然这个表达式还可以化简,为了直观这里就放原式了

2020/12/7 21:44
加载中...