C语言-详细讲解-洛谷P1424 小鱼的航程(改进版)

目录

1.题目要求

2.题目解读

3.代码实现

1.使用switch-case语句

2.使用for循环

3.不用循环(暴力版)


1.题目要求

2.题目解读

此题难点在于对天数的计算,这里我们可以考虑通过循环来算出小鱼游泳的天数

3.代码实现

1.使用switch-case语句

cpp 复制代码
#include<stdio.h>
int main()
{
	int x;
	long long int n,way=0;
	scanf("%d %lld",&x,&n);
	 for(int i=1;i<=n;i++)
	   {
	        switch(x)//对星期依次判断
	        {
	           case 1:case 2:case 3:case 4:case 5:way+=250;
	           case 6: x++;continue;//周六不进行 进行下一循环
	           case 7:x=1;continue;//周日清零为星期一 并进行下一循环
	        }
	      x++;//工作日情况下 进入下一日
	  }
	printf("%lld",way);
	return 0;
}

2.使用for循环

cpp 复制代码
#include<cstdio>
int main()
{
    int n,k,s=0;//周n开始游,过了k天,游了s公里
    scanf("%d %d",&n,&k);
    for(int i=1;i<=k;i++)//要游k天,所以用循环
    {
        if(n!=6 && n!=7) s+=250;//如果不是周末则加250
        if(n==7) n=1;//如果是周7,那么赋值为1
        else n++;//否则n+1
    }
    printf("%d",s);//输出游了多少公里
    return 0;
}

3.不用循环(暴力版)

cpp 复制代码
#include <stdio.h>

int begin,days,front,mid,end;

int main()
{
    scanf("%d %d",&begin,&days);
    front=6-begin;
    if(front<0)
        front=0;
    end=(days-8+begin)%7;
    if(end>5)
        end=5;
    mid=(days-8+begin-(days-8+begin)%7)/7*5;
	if(begin<=5&&begin+days-1<=5)
		printf("%d",days*250);
	else
	{
		if((mid+front+end)>=0)
			printf("%d",(mid+front+end)*250);
		else
			printf("0");
	}
}

***新人博主创作不易,希望大家多多点赞关注呀~

相关推荐
Mr.朱鹏33 分钟前
JVM-GC垃圾回收案例
java·jvm·spring boot·算法·spring·spring cloud·java-ee
WJSKad12351 小时前
【DepthPro】实战教程:单目深度估计算法详解与应用
算法
wzqllwy1 小时前
8 大经典排序算法(Java 实现):原理 + Demo + 核心分析
java·算法·排序算法
We་ct1 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
重生之我是Java开发战士1 小时前
【递归、搜索与回溯】二叉树中的深度优先搜索:布尔二叉树,求根节点到叶节点数字之和,二叉树剪枝,验证二叉搜索树,第K小的元素,二叉树的所有路径
算法·深度优先·剪枝
篮l球场1 小时前
矩阵置零
算法
lihihi1 小时前
P1650 [ICPC 2004 Shanghai R] 田忌赛马(同洛谷2587)
开发语言·算法·r语言
朱一头zcy1 小时前
[牛客]BC38 变种水仙花
算法
努力学算法的蒟蒻1 小时前
day105(3.6)——leetcode面试经典150
算法·leetcode·面试
猫猫的小茶馆1 小时前
【Linux 驱动开发】Linux 内核启动过程详解
linux·c语言·arm开发·驱动开发·stm32·单片机·mcu