P1424 小鱼的航程(改进版)

题目描述

有一只小鱼,它平日每天游泳 250 250 250 公里,周末休息(实行双休日),假设从周 x x x 开始算起,过了 n n n 天以后,小鱼一共累计游泳了多少公里呢?

输入格式

输入两个正整数 x , n x,n x,n,表示从周 x x x 算起,经过 n n n 天。

输出格式

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

样例输入

3 10

样例输出

2000

提示

数据保证, 1 ≤ x ≤ 7 1\le x \le 7 1x7 1 ≤ n ≤ 1 0 6 1 \le n\le 10^6 1n106

参考代码1

#include<iostream>
using namespace std;
int main() {
	int x, n, v = 250, tot = 0;
	cin >> x >> n;
	//将周2~周日开始的情况,先计算出第1周的游泳距离,把所有问题都转化成从周一开始的情况
	switch (x) {
		case 2: //如果从星期2开始
			tot = 4 * v; //第1周游4天
			n = n - 6; //去掉第1周的6天
			break;
		case 3: //如果从星期3开始
			tot = 3 * v; //第1周游3天
			n = n - 5; //去掉第1周的5天
			break;
		case 4: //如果从星期4开始
			tot = 2 * v; //第1周游2天
			n = n - 4; //去掉第1周的4天
			break;
		case 5: //如果从星期5开始
			tot = v; //第1周游1天
			n = n - 3; //去掉第1周的3天
			break;
		case 6: //如果从星期6开始
			n = n - 2; //去掉第1周的2天
			break;
		case 7: //如果从星期7开始
			n = n - 1; //去掉第1周的1天
	}
	tot += 5 * v * (n / 7); //完整周
	//最后一周的游泳天数
	int t = 0;
	if (n % 7 <= 5) t = n % 7;
	else t = 5;
	//最后一周的游泳距离
	tot += v * t;
	//输出结果
	cout << tot;
	return 0;
}

参考代码2

#include<iostream>
using namespace std;
int main() {
	int x, n;
	cin >> x >> n;
	//当x是周六、周日时,相当于从下周一开始
	if (x == 6) {
		x = 1;
		n = n - 2;
	}
	if (x == 7) {
		x = 1;
		n = n - 1;
	}
	//当x是1~5时
	int tot = n / 7 * 5; //完整的星期数
	if ((n % 7 + x - 1) > 5) //最后1天超过星期5
		tot += 5 - x + 1;
	else tot += n % 7; //最后1天有超过星期5
	cout << tot * 250; //输出总长度
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值