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即为答案
当然这个表达式还可以化简,为了直观这里就放原式了