【算法训练营】求最小公倍数+另类加法+走方格的方案数

news2024/10/4 20:45:50

00

7月31日

  • 求最小公倍数
    • 题目
    • 题解
    • 代码
  • 另类加法
    • 题目
    • 题解
    • 代码
  • 走方格的方案数
    • 题目
    • 题解
    • | 1 | 2 | 3 |
    • | 4 | 5 | 6 |
    • | 7 | 8 | 9 |
    • 代码

求最小公倍数

题目

00
点击跳转: 求最小公倍数

题解

最小公倍数 = 两数之积除以最大公约数,这里使用碾转相除法进行最大公约数的求解:即a与b的最大公约数可以转化为a、b之间的余数为两者之间最小的数之间的公约数。所以对于输入的两个数进行连续求余,直到余数为0,求余的分母即为结果。

代码

#include <iostream>
using namespace std;

// 计算两个数的最大公约数
int GCD(int a, int b) {
    if (b == 0)
        return a;
    return GCD(b, a % b);
}

int main() {
    int a, b;
    cin >> a >> b;

    // 求解最小公倍数
    int LCM = (a * b) / GCD(a, b);

    cout << LCM << endl;
    return 0;
}

另类加法

题目

00
点击跳转: 另类加法

题解

按位与和按位异或:
00

  • 【题目解析】
    本题的意思是自己实现加法,不适用现成的运算符,考察大家对于运算符的灵活运用
  • 【解题思路】:
    本题可以通过位运算实现,具体实现如下:
    两个数求和,其实就是 求和后当前位的数据+两个数求和的进位
    例如:
    1 + 2; 00000001 + 00000010
    求和后当前位的数据: 00000011 ; 求和后的进位数据: 没有进位,则 00000000
    两者相加,则得到: 00000011 就是3
    2 + 2; 00000010 + 00000010
    求和后当前位的数据: 00000000, 1和1进位后当前为变成0了
    求和后进位的数据: 00000100, 两个1求和后进位了
    相加后得到: 00000100 就是4
    求和后当前位的数据:简便的计算方法就是两个数进行异或 00000001 ^ 00000010 -> 00000011
    求和后进位的数据:简便的计算方法就是两个数相与后左移一位 (00000010 & 00000010) << 1
    所以这道题使用递归更加容易理解

代码

class UnusualAdd {
  public:
      int addAB(int A, int B) {
            if (A == 0) return B;
            if (B == 0) return A;
            int a = A ^ B;//求和后当前位的数据
            int b = (A & B) << 1;//求和后进位的数据
            return addAB(a, b);//递归两个数进行相加,任意为0时截止
         
    }
};

走方格的方案数

题目

链接: link00
点击跳转: 走方格的方案数

题解

本题为求取路径总数的题目,一般可以通过递归求解,对于复杂的问题,可以通过动态规划求解。此题比较简单,可以通过递归解答。
【解题思路】:
class UnusualAdd {
public:
int addAB(int A, int B) {
if (A == 0) return B;
if (B == 0) return A;
int a = A ^ B;//求和后当前位的数据
int b = (A & B) << 1;//求和后进位的数据
return addAB(a, b);//递归两个数进行相加,任意为0时截止
}
};

| 1 | 2 | 3 |

| 4 | 5 | 6 |

| 7 | 8 | 9 |

  1. 对于上面的nm(33)的格子,有两种情况
    a. 如果n或者m为1,则只有一行或者一列,从左上角走到右下角的路径数为n + m
    比如: 1 * 1格子,可以先向下走,再向右走,到达右下角;或者先向右走,
    再向下走,到达右下角,共两条,即 1 + 1 = 2,对于1 * m和 n * m的
    情况 自己画一下
    b. 如果n,m都大于1,那么走到[n][m]格子的右下角只有两条路径,
    <1>: 从[n - 1][m]格子的右下角向下走,到达
    <2>: 从[n][m - 1]格子的右下角向右走,到达
    所以走到[n][m]格子的右下角的数量为[n-1][m] + [n][m - 1],可以通过递归实现,情况a为递归的终止条件。

代码

#include<iostream>
using namespace std;
int pathNum(int n, int m) {
     if (n > 1 && m > 1)
         //b情况,递归
         return pathNum(n - 1, m) + pathNum(n, m - 1);
     else if (((n >= 1) && (m == 1)) || ((n == 1) && (m >= 1)))
         // a情况,终止条件
      return n + m;
   else
         
     //格子为0时, 路径为0
         return 0;
}
int main() {
    int n, m;
     while (cin >> n >> m)
         {
      cout << pathNum(n, m) << endl;
   
    }
     return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/822391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习盒模型

1.是什么 2.标准模型 3.怪异模型 一、是什么 一个盒子由四部分组成&#xff1a; content、padding、border、margin 在CSS中&#xff0c;盒子模型可以分成&#xff1a; W3C 标准盒子模型IE 怪异盒子模型 默认情况下&#xff0c;盒子模型为W3C标准盒模型 二、标准盒模型 盒子总…

NetApp FAS存储系统磁盘更换详细步骤

说起更换磁盘&#xff0c;都会说非常简单&#xff0c;但无数次的血淋淋的教训让我们再次来审视一下更换磁盘的专业步骤。本文就是介绍最专业的也是最简单的磁盘更换步骤。常在河边走哪有不湿鞋&#xff0c;希望做了几十年攻城狮的你不要在这里翻船。 本文介绍的内容适用于Onta…

ELK日志管理平台架构和使用说明

一、部署架构 二、服务注册 2.1 日志解析服务 服务名&#xff1a;日志解析服务&#xff08;Logstash&#xff09; 服务默认端口&#xff1a;9600 2.2 日志查询服务 服务名&#xff1a;日志查询服务&#xff08;Kibana&#xff09; 服务默认端口&#xff1a;5601 三、对接…

光纤激光切割机是否属于环保设备

光纤激光切割机不属于环保设备。 环保设备是指用于控制环境污染、改善环境质量而由生产单位或建筑安装单位制造和建造出来的机械产品、构筑物及系统。 单纯的激光切割机当前是豁免环评的&#xff0c;比起普通二氧化碳激光切割机更节省空间和气体消耗量&#xff0c;光电转化率高…

C语言手撕单链表

一、链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;也就是内存存储不是像顺序表那么连续存储&#xff0c;而是以结点的形式一块一块存储在堆上的&#xff08;用动态内存开辟&#xff09;。 既然在内存上不是连续存储&#xff0c;那我们如何将这一…

代码随想录算法训练营第二十八天 | Leetcode随机抽题检测

Leetcode随机抽题检测--使用题库&#xff1a;Leetcode热题100 1 两数之和未看解答自己编写的青春版重点题解的代码日后再次复习重新写 49 字母异位词分组未看解答自己编写的青春版重点题解的代码日后再次复习重新写 128 最长连续序列未看解答自己编写的青春版重点关于 left 和 …

谷歌浏览器提示客户端和服务器不支持一般 SSL 协议版本或加密套件(亲测有效)

目录 一、定位问题二、升级TLS1.21、原理之前架构调整架构 2、配置nginx3、配置tomcat 三、访问nginx即可 最近访问一部分网站时&#xff0c;出现如下图所示 “ 此网站无法提供案例连接&#xff0c;客户端和服务器不支持一般 SSL 协议版本或加密套件 ” 的问题。 一、定位问题…

AIGC之AI绘画行业发展研究报告(2023)

全部140页&#xff0c;完整版pdf下载见文末。 链接&#xff1a;AIGC之AI绘画行业发展研究报告&#xff08;2023&#xff09; 提取码&#xff1a;关注 未来人智慧 回复 AIGC之AI绘画行业发展研究报告&#xff08;2023&#xff09;

C语言每日一题:11.《数据结构》链表分割。

题目一&#xff1a; 题目链接&#xff1a; 思路一&#xff1a;使用带头链表 1.构建两个新的带头链表&#xff0c;头节点不存储数据。 2.循环遍历原来的链表。 3.小于x的尾插到第一个链表。 4.大于等于x尾插到第二个链表。 5.进行链表合并&#xff0c;注意第二个链表的尾的下一…

IO进程线程第四天(8.1)

作业1&#xff1a; 从终端获取一个文件的路径以及名字。 若该文件是目录文件&#xff0c;则将该文件下的所有文件的属性显示到终端&#xff0c;类似ls -l该文件夹 若该文件不是目录文件&#xff0c;则显示该文件的属性到终端上&#xff0c;类似ls -l这单个文件 #include<…

ad+硬件每日学习十个知识点(16)23.7.27 (总线保持、lin报文、逻辑器件手册解读)

文章目录 1.总线保持是怎么实现的&#xff1f;有什么需要注意的&#xff08;驱动电流和电阻&#xff09;&#xff1f;2.LIN报文3.芯片datasheet的features、applications、description看完&#xff0c;应该能大致判断逻辑器件能否满足我们的要求。4.什么是逻辑器件的传输延时&a…

系统架构设计师_备考第1天

文章目录 前言一、软考历史与体系二、考试价值与意义三、软考报名与交费四、考试介绍五、综合备考策略 前言 从今天开始&#xff0c;会认真备考系统架构设计师&#xff0c;希望95天后&#xff0c;拿下软考证书。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可…

P3372 【模板】线段树 1(内附封面)

【模板】线段树 1 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m&#xff0c;分别表示该数列数字的个数和操作的总个数。 …

深度学习(33)——CycleGAN(1)

深度学习&#xff08;33&#xff09;——CycleGAN&#xff08;1&#xff09; 完整项目在在这里&#xff1a;欢迎造访 文章目录 深度学习&#xff08;33&#xff09;——CycleGAN&#xff08;1&#xff09;1. Generator2. Discriminator3. fake pool4. loss定义5. 模型参数量6…

Nodejs 第七章(发布npm包)

发布npm的包的好处是什么 方便团队或者跨团队共享代码&#xff0c;使用npm包就可以方便的管理&#xff0c;并且还可以进行版本控制做开源造轮子必备技术&#xff0c;否则你做完的轮子如何让别人使用难道是U盘拷贝&#xff1f;面试题我面字节的时候就问到了这个增加个人IP 让更…

消息队列之 - 消息持久化设计

目录 前言设计思想消息文件的格式垃圾回收的思想其他情况序列化和反序列化 具体代码实现测试消息文件 前言 我们之前说过, 消息队列不管要往硬盘中存储, 还要往内存中存储, 并且是以内存为主 ,硬盘为辅, 接下来, 就将消息队列如何存储到硬盘 做一个设计 设计思想 我们往硬盘…

云服务器无法远程连接服务

问题 今天刚买了华为的云服务器&#xff0c;通过宝塔安装了对应的基础服务&#xff0c;也在华为云的官网上设置了安全组。此时万事俱备只欠东风&#xff0c;我测试使用sqlyog进行远程连接。原本已经在准备部署项目了&#xff0c;现实给了我重重的一拳。 sqlyog爆2003代码错误&…

交换机VLAN技术和实验(eNSP)

目录 一&#xff0c;交换机的演变 1.1&#xff0c;最小网络单元 1.2&#xff0c;中继器&#xff08;物理层&#xff09; 1.3&#xff0c;集线器&#xff08;物理层&#xff09; 1.4&#xff0c;网桥&#xff08;数据链路层&#xff09; 二&#xff0c;交换机的工作行为 2.…

IO进线程——库的制作(静态库、动态库)

库的制作 1、静态库 ①生成二进制文件 gcc -c linkstack.c -o linkstack.o②制作静态库文件&#xff0c;把.o文件转换为.a文件 ar crs liblinkstack.a linkstack.o③编译时链接 gcc linkstack_main.c -L. -llinkstack2、动态库 ①生成地址无关二进制文件 gcc -fPIC -c l…

《工具箱-VNCServer》配置VNCServer,使用VNCViewer实现局域网内页面共享

VNCServer设置 通过VNCServer配置&#xff0c;与VNCviewer配套使用 1.下载并安装VNCServer 2.邮箱密码注册后用户登录 3.设置VNC密码 4.设置viewer不能控制本机 5.打开VNClicensewiz&#xff0c;选择“Enter a license key …” BQ24G-PDXE4-KKKRS-WBHZE-F5RCA BQ24G-PDXE4-…