首页 > 编程语言 >算法入门(6) 7.5

算法入门(6) 7.5

时间:2024-07-06 21:20:45浏览次数:18  
标签:le 入门 int 天数 样例 算法 小鱼 7.5 输入

小鱼的航程(改进版)

题目背景

题目描述

有一只小鱼,它平日每天游泳 $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;
}

标签:le,入门,int,天数,样例,算法,小鱼,7.5,输入
From: https://www.cnblogs.com/LCdbtable/p/18287926

相关文章