当前位置: 首页 > news >正文

某企业网站搜索引擎优化广州优化疫情防控措施

某企业网站搜索引擎优化,广州优化疫情防控措施,做dapp开发广州,wordpress 入门电子书一、问题描述 题目描述 求从坐标零点到坐标点 n 的最小步数&#xff0c;一次只能沿横坐标轴向左或向右移动 2 或 3。 注意&#xff1a;途径的坐标点可以为负数。 输入描述 坐标点 n 输出描述 输出从坐标零点移动到坐标点 n 的最小步数。 备注 1 < n < 10^9 用例…

在这里插入图片描述

一、问题描述

题目描述

求从坐标零点到坐标点 n 的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3。

注意:途径的坐标点可以为负数。

输入描述

坐标点 n

输出描述

输出从坐标零点移动到坐标点 n 的最小步数。

备注

1 <= n <= 10^9

用例

用例 1

输入:

4

输出:

2

说明:
从坐标零点移动到 4,最小需要两步,即右移 2,再右移 2。

题目解析

题目要求我们找到将数字 n 分解为若干个 23 的和,使得分解后的项数最少。通过观察小数量级的例子,我们可以总结出以下规律:


1. 小数量级的规律

n = 1n = 16 的分解情况如下:

n分解方式最少步数
1-2 + 32
221
331
42 + 22
53 + 22
63 + 32
73 + 2 + 23
83 + 3 + 23
93 + 3 + 33
103 + 3 + 2 + 24
113 + 3 + 3 + 24
123 + 3 + 3 + 34
133 + 3 + 3 + 2 + 25
143 + 3 + 3 + 3 + 25
153 + 3 + 3 + 3 + 35
163 + 3 + 3 + 3 + 2 + 26

2. 规律总结

n >= 4 开始,我们可以总结出以下规律:

  1. 每增加 3,最少步数增加 1

    • 例如:
      • n = 4 的最少步数是 2。
      • n = 7 的最少步数是 3。
      • n = 10 的最少步数是 4。
    • 这是因为每增加 3,相当于增加一个 3,而 3 的分解步数为 1。
  2. 分解中的 23 的作用

    • 如果分解中存在 2,那么 n + 1 可以通过将 2 替换为 3 来实现,此时最少步数保持不变。
      • 例如:
        • n = 4 的分解是 2 + 2,最少步数是 2。
        • n = 5 的分解是 3 + 2,最少步数仍然是 2。
    • 如果分解中不存在 2,那么 n + 1 需要通过将 3 替换为 2 + 2 来实现,此时最少步数增加 1。
      • 例如:
        • n = 6 的分解是 3 + 3,最少步数是 2。
        • n = 7 的分解是 3 + 2 + 2,最少步数增加到 3。

3. 通用规律

对于任意 n >= 4,最少步数可以通过以下方式计算:

  1. 计算 n 除以 3 的商和余数

    • n = 3 * k + r,其中 k 是商,r 是余数(r = 0, 1, 2)。
    • 如果 r = 0,则最少步数为 k
    • 如果 r = 1,则最少步数为 k - 1 + 2(将最后一个 3 替换为 2 + 2)。
    • 如果 r = 2,则最少步数为 k + 1
  2. 特殊情况

    • 对于 n = 1,需要特殊处理,因为无法直接用 23 分解。
    • 对于 n = 2n = 3,最少步数分别为 1。

4. 示例验证

示例 1:n = 7
  • 分解方式:3 + 2 + 2
  • 最少步数:3。
  • 验证:
    • 7 = 3 * 2 + 1,余数 r = 1
    • 最少步数 = 2 - 1 + 2 = 3
示例 2:n = 10
  • 分解方式:3 + 3 + 2 + 2
  • 最少步数:4。
  • 验证:
    • 10 = 3 * 3 + 1,余数 r = 1
    • 最少步数 = 3 - 1 + 2 = 4
示例 3:n = 12
  • 分解方式:3 + 3 + 3 + 3
  • 最少步数:4。
  • 验证:
    • 12 = 3 * 4 + 0,余数 r = 0
    • 最少步数 = 4

5. 总结

通过观察小数量级的例子,我们可以总结出以下规律:

  1. 对于 n >= 4,最少步数与 n 除以 3 的商和余数有关。
  2. 如果余数为 0,最少步数为商。
  3. 如果余数为 1,最少步数为商减 1 加 2。
  4. 如果余数为 2,最少步数为商加 1。

这种规律可以帮助我们快速计算任意 n 的最少步数,而无需逐个分解。

如果有其他问题,欢迎随时提问!

二、JavaScript算法源码

以下是 JavaScript 代码 的详细中文注释和逻辑讲解:


代码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");// 创建 readline 接口实例
const rl = readline.createInterface({input: process.stdin,  // 输入流为标准输入output: process.stdout, // 输出流为标准输出
});// 监听输入事件
rl.on("line", (line) => {// 将输入转换为整数并调用 getResult 函数console.log(getResult(parseInt(line)));
});// 计算最少步数的函数
function getResult(n) {// 处理特殊情况if (n == 1) return 2; // n=1 时,最少步数为 2if (n == 2) return 1; // n=2 时,最少步数为 1if (n == 3) return 1; // n=3 时,最少步数为 1// 基础步数let base = 2; // 从 n=4 开始,最少步数为 2// 计算 n >= 4 时的最少步数return Math.floor((n - 4) / 3) + base;
}

代码逻辑讲解

1. 输入处理
  • 使用 readline 模块创建一个接口实例 rl,用于从控制台读取输入。
  • 监听 line 事件,当用户输入一行内容时,触发回调函数。
  • 在回调函数中:
    • 将输入内容 line 转换为整数 n
    • 调用 getResult(n) 函数计算最少步数,并输出结果。

2. 最少步数计算
  • 特殊情况处理
    • n = 1 时,最少步数为 2(因为 1 = -2 + 3)。
    • n = 2 时,最少步数为 1(因为 2 = 2)。
    • n = 3 时,最少步数为 1(因为 3 = 3)。
  • 通用规律
    • 对于 n >= 4,最少步数的计算方式为:
      • 基础步数 base = 2(从 n = 4 开始,最少步数为 2)。
      • 每增加 3,最少步数增加 1。
      • 公式:Math.floor((n - 4) / 3) + base

3. 公式推导
  • n = 4 开始
    • n = 4:最少步数为 2
    • n = 5:最少步数为 2
    • n = 6:最少步数为 2
    • n = 7:最少步数为 3
    • n = 8:最少步数为 3
    • n = 9:最少步数为 3
    • n = 10:最少步数为 4
    • 以此类推。
  • 规律
    • 每增加 3,最少步数增加 1。
    • 公式:Math.floor((n - 4) / 3) + base

4. 示例验证
示例 1:n = 4
  • 计算:
    • Math.floor((4 - 4) / 3) + 2 = 0 + 2 = 2
  • 结果:
    • 最少步数为 2(符合 4 = 2 + 2)。
示例 2:n = 7
  • 计算:
    • Math.floor((7 - 4) / 3) + 2 = 1 + 2 = 3
  • 结果:
    • 最少步数为 3(符合 7 = 3 + 2 + 2)。
示例 3:n = 10
  • 计算:
    • Math.floor((10 - 4) / 3) + 2 = 2 + 2 = 4
  • 结果:
    • 最少步数为 4(符合 10 = 3 + 3 + 2 + 2)。

总结

  • 功能:计算将数字 n 分解为若干个 23 的和,使得分解后的项数最少。
  • 核心逻辑
    1. 处理特殊情况(n = 1, 2, 3)。
    2. 对于 n >= 4,使用公式 Math.floor((n - 4) / 3) + base 计算最少步数。
  • 适用场景:需要将数字分解为 23 的和,且要求分解项数最少的场景。
  • 注意事项
    • 输入必须为正整数。
    • 对于 n = 1,需要特殊处理。

如果有其他问题,欢迎随时提问!

三、Java算法源码

以下是 Java 代码 的详细中文注释和逻辑讲解:


代码

import java.util.Scanner; // 导入 Scanner 类,用于读取输入public class Main {public static void main(String[] args) {// 创建 Scanner 对象,用于读取控制台输入Scanner sc = new Scanner(System.in);// 读取输入的整数 nint n = sc.nextInt();// 调用 getResult 方法计算最少步数,并输出结果System.out.println(getResult(n));}// 计算最少步数的方法public static int getResult(int n) {// 处理特殊情况if (n == 1) return 2; // n=1 时,最少步数为 2(-2 + 3)if (n == 2) return 1; // n=2 时,最少步数为 1(2)if (n == 3) return 1; // n=3 时,最少步数为 1(3)// 基础步数int base = 2; // 从 n=4 开始,最少步数为 2// 计算 n >= 4 时的最少步数return (n - 4) / 3 + base;}
}

代码逻辑讲解

1. 输入处理
  • 使用 Scanner 类从控制台读取输入。
  • 通过 sc.nextInt() 读取一个整数 n,表示需要分解的数字。

2. 最少步数计算
  • 特殊情况处理
    • n = 1 时,最少步数为 2(因为 1 = -2 + 3)。
    • n = 2 时,最少步数为 1(因为 2 = 2)。
    • n = 3 时,最少步数为 1(因为 3 = 3)。
  • 通用规律
    • 对于 n >= 4,最少步数的计算方式为:
      • 基础步数 base = 2(从 n = 4 开始,最少步数为 2)。
      • 每增加 3,最少步数增加 1。
      • 公式:(n - 4) / 3 + base

3. 公式推导
  • n = 4 开始
    • n = 4:最少步数为 2
    • n = 5:最少步数为 2
    • n = 6:最少步数为 2
    • n = 7:最少步数为 3
    • n = 8:最少步数为 3
    • n = 9:最少步数为 3
    • n = 10:最少步数为 4
    • 以此类推。
  • 规律
    • 每增加 3,最少步数增加 1。
    • 公式:(n - 4) / 3 + base

4. 示例验证
示例 1:n = 4
  • 计算:
    • (4 - 4) / 3 + 2 = 0 + 2 = 2
  • 结果:
    • 最少步数为 2(符合 4 = 2 + 2)。
示例 2:n = 7
  • 计算:
    • (7 - 4) / 3 + 2 = 1 + 2 = 3
  • 结果:
    • 最少步数为 3(符合 7 = 3 + 2 + 2)。
示例 3:n = 10
  • 计算:
    • (10 - 4) / 3 + 2 = 2 + 2 = 4
  • 结果:
    • 最少步数为 4(符合 10 = 3 + 3 + 2 + 2)。

总结

  • 功能:计算将数字 n 分解为若干个 23 的和,使得分解后的项数最少。
  • 核心逻辑
    1. 处理特殊情况(n = 1, 2, 3)。
    2. 对于 n >= 4,使用公式 (n - 4) / 3 + base 计算最少步数。
  • 适用场景:需要将数字分解为 23 的和,且要求分解项数最少的场景。
  • 注意事项
    • 输入必须为正整数。
    • 对于 n = 1,需要特殊处理。

如果有其他问题,欢迎随时提问!

四、Python算法源码

以下是 Python 代码 的详细中文注释和逻辑讲解:


代码

# 输入获取
n = int(input())  # 从控制台读取输入的整数 n# 算法入口
def getResult():# 处理特殊情况if n == 1:return 2  # n=1 时,最少步数为 2(-2 + 3)if n == 2:return 1  # n=2 时,最少步数为 1(2)if n == 3:return 1  # n=3 时,最少步数为 1(3)# 基础步数base = 2  # 从 n=4 开始,最少步数为 2# 计算 n >= 4 时的最少步数return (n - 4) // 3 + base# 算法调用
print(getResult())  # 调用 getResult 函数并输出结果

代码逻辑讲解

1. 输入处理
  • 使用 input() 函数从控制台读取输入,并通过 int() 将输入转换为整数 n

2. 最少步数计算
  • 特殊情况处理
    • n = 1 时,最少步数为 2(因为 1 = -2 + 3)。
    • n = 2 时,最少步数为 1(因为 2 = 2)。
    • n = 3 时,最少步数为 1(因为 3 = 3)。
  • 通用规律
    • 对于 n >= 4,最少步数的计算方式为:
      • 基础步数 base = 2(从 n = 4 开始,最少步数为 2)。
      • 每增加 3,最少步数增加 1。
      • 公式:(n - 4) // 3 + base

3. 公式推导
  • n = 4 开始
    • n = 4:最少步数为 2
    • n = 5:最少步数为 2
    • n = 6:最少步数为 2
    • n = 7:最少步数为 3
    • n = 8:最少步数为 3
    • n = 9:最少步数为 3
    • n = 10:最少步数为 4
    • 以此类推。
  • 规律
    • 每增加 3,最少步数增加 1。
    • 公式:(n - 4) // 3 + base

4. 示例验证
示例 1:n = 4
  • 计算:
    • (4 - 4) // 3 + 2 = 0 + 2 = 2
  • 结果:
    • 最少步数为 2(符合 4 = 2 + 2)。
示例 2:n = 7
  • 计算:
    • (7 - 4) // 3 + 2 = 1 + 2 = 3
  • 结果:
    • 最少步数为 3(符合 7 = 3 + 2 + 2)。
示例 3:n = 10
  • 计算:
    • (10 - 4) // 3 + 2 = 2 + 2 = 4
  • 结果:
    • 最少步数为 4(符合 10 = 3 + 3 + 2 + 2)。

总结

  • 功能:计算将数字 n 分解为若干个 23 的和,使得分解后的项数最少。
  • 核心逻辑
    1. 处理特殊情况(n = 1, 2, 3)。
    2. 对于 n >= 4,使用公式 (n - 4) // 3 + base 计算最少步数。
  • 适用场景:需要将数字分解为 23 的和,且要求分解项数最少的场景。
  • 注意事项
    • 输入必须为正整数。
    • 对于 n = 1,需要特殊处理。

如果有其他问题,欢迎随时提问!

五、C/C++算法源码:

以下是 C 语言代码C++ 代码 的详细中文注释和逻辑讲解:


C 语言代码

#include <stdio.h>  // 引入标准输入输出库int main() {int n;  // 定义变量 n,用于存储输入的数字scanf("%d", &n);  // 从控制台读取输入的整数 nint ans;  // 定义变量 ans,用于存储计算结果// 使用 switch 语句处理不同情况switch (n) {case 1:ans = 2;  // n=1 时,最少步数为 2(-2 + 3)break;case 2:ans = 1;  // n=2 时,最少步数为 1(2)break;case 3:ans = 1;  // n=3 时,最少步数为 1(3)break;default:ans = (n - 4) / 3 + 2;  // n >= 4 时,使用公式计算最少步数}printf("%d\n", ans);  // 输出结果return 0;  // 程序正常结束
}

C++ 代码

#include <iostream>  // 引入输入输出流库
using namespace std;  // 使用标准命名空间int main() {int n;  // 定义变量 n,用于存储输入的数字cin >> n;  // 从控制台读取输入的整数 nint ans;  // 定义变量 ans,用于存储计算结果// 使用 switch 语句处理不同情况switch (n) {case 1:ans = 2;  // n=1 时,最少步数为 2(-2 + 3)break;case 2:ans = 1;  // n=2 时,最少步数为 1(2)break;case 3:ans = 1;  // n=3 时,最少步数为 1(3)break;default:ans = (n - 4) / 3 + 2;  // n >= 4 时,使用公式计算最少步数}cout << ans << endl;  // 输出结果return 0;  // 程序正常结束
}

代码逻辑讲解

1. 输入处理
  • C 语言
    • 使用 scanf("%d", &n) 从控制台读取输入的整数 n
  • C++
    • 使用 cin >> n 从控制台读取输入的整数 n

2. 最少步数计算
  • 特殊情况处理
    • n = 1 时,最少步数为 2(因为 1 = -2 + 3)。
    • n = 2 时,最少步数为 1(因为 2 = 2)。
    • n = 3 时,最少步数为 1(因为 3 = 3)。
  • 通用规律
    • 对于 n >= 4,最少步数的计算方式为:
      • 基础步数 2(从 n = 4 开始,最少步数为 2)。
      • 每增加 3,最少步数增加 1。
      • 公式:(n - 4) / 3 + 2

3. 公式推导
  • n = 4 开始
    • n = 4:最少步数为 2
    • n = 5:最少步数为 2
    • n = 6:最少步数为 2
    • n = 7:最少步数为 3
    • n = 8:最少步数为 3
    • n = 9:最少步数为 3
    • n = 10:最少步数为 4
    • 以此类推。
  • 规律
    • 每增加 3,最少步数增加 1。
    • 公式:(n - 4) / 3 + 2

4. 示例验证
示例 1:n = 4
  • 计算:
    • (4 - 4) / 3 + 2 = 0 + 2 = 2
  • 结果:
    • 最少步数为 2(符合 4 = 2 + 2)。
示例 2:n = 7
  • 计算:
    • (7 - 4) / 3 + 2 = 1 + 2 = 3
  • 结果:
    • 最少步数为 3(符合 7 = 3 + 2 + 2)。
示例 3:n = 10
  • 计算:
    • (10 - 4) / 3 + 2 = 2 + 2 = 4
  • 结果:
    • 最少步数为 4(符合 10 = 3 + 3 + 2 + 2)。

总结

  • 功能:计算将数字 n 分解为若干个 23 的和,使得分解后的项数最少。
  • 核心逻辑
    1. 处理特殊情况(n = 1, 2, 3)。
    2. 对于 n >= 4,使用公式 (n - 4) / 3 + 2 计算最少步数。
  • 适用场景:需要将数字分解为 23 的和,且要求分解项数最少的场景。
  • 注意事项
    • 输入必须为正整数。
    • 对于 n = 1,需要特殊处理。

如果有其他问题,欢迎随时提问!

http://www.ds6.com.cn/news/71249.html

相关文章:

  • 两个网站如何做端口映射关键词排名seo优化
  • 湖北建设银行官方网站首页google官网注册账号入口
  • 做网站-信科网络百度95099怎么转人工
  • 网站编辑超链接怎么做网站权重是什么意思
  • 网站建设flash设计商丘关键词优化推广
  • 网站开发php技术专业搜索引擎seo合作
  • 如何设置网站布局百度资讯指数
  • 网站构造下拉列表怎么做宁波seo公司排名
  • 招聘网站建设方案模板下载一键seo提交收录
  • 岳阳做网站公司seo外链推广员
  • 换了家公司做网站如何接入备案seo排名第一的企业
  • 不良网站浏览窗口互联网推广平台有哪些
  • 常用网站布局百度seo营销推广
  • 网站改版的seo注意事项东莞优化疫情防控措施
  • 网站地图做关键词排名成都达洱狐网络科技有限公司
  • 政协网站建设推广公司有哪些公司
  • 建设网站工作室舆情网站直接打开的软件
  • 深圳网站设计哪家公司好网站制作河南
  • 网站托管服务适用于哪种类型的网站东莞seo外包公司
  • 萍乡做网站设计培训学院
  • 源代码如何做网站上海网站推广服务公司
  • 编程python长春seo优化企业网络跃升
  • 无锡微信网站定制百度推广如何办理
  • java做购物网站互动营销策略
  • 网站建设商标保护企业品牌推广
  • 网站怎么做才能赚钱吗网络运营主要做什么工作
  • 网站建设哪几家好一些百度广告怎么收费
  • wordpress 聊天插件网站关键词怎么优化排名
  • 济南商城网站建设多少钱烟台网站建设
  • wordpress调用 别的网站营销咨询顾问