小鱼的航程(改进版)
题目背景
题目描述
有一只小鱼,它平日每天游泳 $250$ 公里,周末休息(实行双休日),假设从周 $x$ 开始算起,过了 $n$ 天以后,小鱼一共累计游泳了多少公里呢?
输入格式
输入两个正整数 $x,n$,表示从周 $x$ 算起,经过 $n$ 天。
输出格式
输出一个整数,表示小鱼累计游泳了多少公里。
样例 #1
样例输入 #1
3 10
样例输出 #1
2000
提示
数据保证,$1\le x \le 7$,$1 \le n\le 10^6$。
题解
暴力常规做法
#include<bits/stdc++.h> //包含了所有C++头文件的头文件
using namespace std;
int main()
{
unsigned long long n,ans=0; //坑就坑在这儿。天数都那么大了,总路程还会小吗???
int x;
cin >> x >> n; //输入星期和持续天数
for(int i=0;i<n;i++)
{
if((x!=6)&&(x!=7)) //只要星期不等于6和7
ans += 250; //总长度增加250
if(x==7) //当x等于7的时候
x=1; // x归位为1
else //其他情况下(x不等于7的时候)
x++; //x自加1
}
cout << ans; //输出总路程
return 0;
}
一种我想过但没想出来的方法
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int x, n;
cin >> x >> n;
int d = n / 7 * 5; // 整周的工作日数
int r = n % 7;
if (r > 0) // 有剩余天数
{
if (r + x == 7 || x == 7) //如开始为周日肯定只休息一天;如r+x==7即最后一天为周六,也休息一天
r -= 1;
else if (r + x >= 8) //最后一天已过周日,休息两天
r -= 2;
}
cout << (d + r) * 250 << endl;
return 0;
}