小鱼的航程(改进版)
题目背景
题目描述
有一只小鱼,它平日每天游泳 $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和7ans += 250; //总长度增加250if(x==7) //当x等于7的时候x=1; // x归位为1else //其他情况下(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;
}