HDU1032——The 3n + 1 problem,HDU1033——Edge,HDU1034——Candy Sharing Game

目录

HDU1032——The 3n + 1 problem

题目描述

运行代码

代码思路

HDU1033——Edge

题目描述

运行代码

代码思路

HDU1034——Candy Sharing Game

题目描述

运行代码

代码思路

HDU1032——The 3n + 1 problem

题目描述

Problem - 1032

运行代码

#include <iostream>
using namespace std;
int main() {int i, j, t, k;while (cin >> i >> j) {int u = i;int o = j;int max = 0;if (i > j) {t = i;i = j;j = t;}for (k = i; k <= j; k++) {  // 从 i 到 j 寻找最大循环次数int p = k;int cn = 0;while (p != 1) {if (p % 2 != 0)p = 3 * p + 1;elsep = p / 2;cn++;  // cn 记录每个数变成 1 所需要的最大循环次数}if (max < cn)max = cn;}cout << u << " " << o << " " << max + 1 << endl;}return 0;
}

代码思路

  1. 读取输入:代码从标准输入读取两个整数ij,这两个整数定义了我们感兴趣的一个范围。

  2. 交换输入:如果i大于j,则交换它们的位置,确保i总是小于或等于j,这样在后续的循环中我们可以从ij进行迭代。

  3. 初始化变量uo分别存储了最初的ij的值,以便在最后输出时使用;max变量被初始化为0,用于记录在指定范围内所有数的Collatz序列中,序列长度的最大值。

  4. 遍历范围内的每一个数:从ij,对于范围内的每一个数k,代码将计算其Collatz序列的长度。

  5. 计算Collatz序列长度:对于每个数k,初始化p等于k,并使用一个循环来生成Collatz序列,直到p变为1。在这个过程中,如果p是奇数,则更新p3 * p + 1;如果是偶数,则更新pp / 2。每次迭代,cn(循环计数)都会增加,用于记录生成序列所需的步数。

  6. 更新最大序列长度:每次计算完一个数的序列长度后,检查cn是否大于当前已知的最大序列长度max,如果是,则更新maxcn

  7. 输出结果:在处理完所有数后,输出最初输入的两个数uo,以及最长序列的长度max + 1(因为序列的初始步骤也算一步)。这里加1是因为循环从某个数开始,最终到达1,所以cn记录的是到达1之前的步数,因此最终结果要加1。

  8. 循环继续或结束:由于while循环的存在,程序会持续读取和处理输入,直到没有更多的输入为止(例如,当标准输入结束时)。

HDU1033——Edge

题目描述

Problem - 1033

运行代码

#include <iostream>
#include <string>
using namespace std;
const int L = 0, R = 1, U = 2, D = 3;  // 代表左右上下 4 方向
int dir_A[] = { U, D, R, L };  // 执行 A 右转操作时 4 个方向变为对应的 UDRL 方向
int dir_V[] = { D, U, L, R };  // 执行 V 左转操作时 4 个方向变为对应的 DULR 方向
int dx[] = { -10, 10, 0, 0 };  // 左右上下 4 方向对应的 X 坐标增量
int dy[] = { 0, 0, 10, -10 };  // y 增量void Edge(const string& com) {cout << "300 420 moveto" << endl;cout << "310 420 lineto" << endl;int x = 310, y = 420;  // 初始的坐标int cur_dir = R;  // 初始的方向始终向右for (char c : com) {  // 遍历命令int new_dir;  // 新的方向if (c == 'A') {new_dir = dir_A[cur_dir];x += dx[new_dir];  // 新方向 X 增量y += dy[new_dir];  // 新方向 Y 增量}else {new_dir = dir_V[cur_dir];x += dx[new_dir];y += dy[new_dir];}cur_dir = new_dir;  // 更新当前方向cout << x << " " << y << " lineto" << endl;}cout << "stroke" << endl;cout << "showpage" << endl;
}int main() {string com;while (cin >> com) {Edge(com);}return 0;
}

代码思路

HDU1034——Candy Sharing Game

题目描述

Problem - 1034

运行代码

#include <iostream>
#include <cstdio>
#define N 100using namespace std;int main() {int s[N], n, i, k, t, p;while (scanf_s("%d", &n) == 1 && n) {for (i = 0; i < n; i++)scanf_s("%d", s + i);for (k = 1; ; k++) {t = s[n - 1] / 2;  // 首先处理边界条件,存取最后一个人糖果数的一半for (i = 0; i < n; i++) {p = s[i] / 2;  // 存取当前糖果数的一半用来给右边的同学s[i] = s[i] / 2 + t;  // 自己减一半再加上左边同学给的一半t = p;  // 给完一个同学换下一个if (s[i] % 2 != 0)  // 当前处理完如果为奇数,收老师一个s[i]++;}t = s[0];bool isSame = true;  // 增加一个标志变量来判断是否每个同学糖果数相同for (i = 1; i < n; i++) {if (s[0] != s[i]) {isSame = false;break;}}if (isSame) {break;}}printf("%d %d\n", k, t);  // 输出游戏次数和每个人最终的糖果数}return 0;
}

代码思路

  1. 读取输入:代码从标准输入读取一组整数,第一个整数n表示参与游戏的小朋友的数量,接着读取n个整数,表示每个小朋友初始拥有的糖果数。

  2. 初始化游戏状态:使用一个整型数组s存储每个小朋友的糖果数,数组s的大小由宏N决定,这里假设最多有100个小朋友参与游戏。

  3. 重新分配糖果:代码进入一个无限循环,开始重新分配糖果的过程。每一次循环代表游戏的一轮。

  4. 处理边界条件:在每轮开始时,处理边界条件,即最后一个小朋友糖果数的一半会被保留,用于在这一轮结束时给予第一个小朋友。

  5. 分配糖果的逻辑:对于每一个小朋友,他们将自己的糖果数分成两半,一半留给自身,另一半给予右边的小朋友。如果分配后糖果数为奇数,则额外获得一颗糖果,以确保糖果数为偶数。

  6. 检查游戏是否结束:每一轮结束后,检查所有小朋友的糖果数是否相同。为此,代码使用了一个布尔变量isSame来标记所有小朋友的糖果数是否一致。如果所有小朋友的糖果数相同,游戏结束,跳出循环。

  7. 输出结果:一旦游戏结束,输出游戏的轮数k和每个小朋友最终的糖果数t

  8. 循环处理多组数据:由于使用了while循环读取输入,代码可以连续处理多组数据,直到读取的n为0或输入结束。

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

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

相关文章

相信开源的力量,MoonBit 构建系统正式开源

MoonBit 构建系统正式开源 作为由 AI 驱动的云服务和边缘计算开发者平台&#xff0c;MoonBit 自设计之初便注重工具链与语言的协同效果。MoonBit 为开发者提供了一套开箱即用的工具链&#xff0c;包括集成开发环境&#xff08;IDE&#xff09;、编译器、构建系统和包管理器&…

android audio不同音频流,(六)settings内音频流音量调整

&#xff08;1&#xff09;settings内&#xff0c;可设置音频流音量&#xff0c;如下图&#xff1a; &#xff08;2&#xff09;settings调整音量条进度&#xff0c;会触发SeekBarVolumizer对象&#xff1a; SeekBarVolumizer文件路径&#xff1a; frameworks/base/core/java/…

【MySQL进阶之路 | 高级篇】事务的ACID特性

1. 数据库事务概述 事务是数据库区别于文件系统的重要特性之一&#xff0c;当我们有了事务就会让数据库始终保持一致性&#xff0c;同时我们还能通过事务的机制恢复到某个时间点&#xff0c;这样可以保证给已提交到数据库的修改不会因为系统崩溃而丢失。 1.1 基本概念 事务&…

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术&#xff0c;特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端&#xff0c;输入以下命令&#xff1a; yarn create vite 输入完成以后输入项目名称、选择开发框架&#xff0c;选择开发语言&#xff0c;如下图所示&#xff0c;即可完成项目创建。 注意事项&#xff1a; 1. Node版本必须符合要求&…

OceanBase v4.2 特性解析:如何实现表级恢复

背景 在某些情况下&#xff0c;你可能会因为误操作而遇到表数据损坏或误删表的情况。为了能在事后将表数据恢复到某个特定时间点&#xff0c;在OceanBase尚未有表级恢复功能之前&#xff0c;你需要进行以下步骤&#xff1a; 利用OceanBase提供的物理恢复工具&#xff0c;您可…

Linux云计算 |【第一阶段】SERVICES-DAY6

主要内容&#xff1a; Linux容器基础、Linux容器管理、podman命令行、管理容器进阶 实操前骤&#xff1a;安装 RHEL8.2 虚拟机 1.选择软件包&#xff1a;rhel-8.2-x86-dvd.iso&#xff1b; 2.内存2048M&#xff1b; 3.时区选择亚洲-上海&#xff0c;带GUI的服务器&#xff1b…

使用kali对操作系统和网络服务类型进行探测

1&#xff0e;在Kali终端中输入命令“nmap –sS –n -O 192.168.2.2”&#xff0c;探测目标主机的操作系统类型 2&#xff0e; 在Kali终端中输入命令“nmap –sV -n 192.168.2.2”&#xff0c;探测目标主机开启的网络服务类型 3.在Kali终端中输入命令“nmap –A -n 192.168.2.2…

vue3前端开发-小兔鲜项目-产品详情基础数据渲染

vue3前端开发-小兔鲜项目-产品详情基础数据渲染&#xff01;这一次内容比较多&#xff0c;我们分开写。第一步先完成详情页面的基础数据的渲染。然后再去做一下右侧的热门产品的列表内容。 第一步&#xff0c;还是老规矩&#xff0c;先准备好接口函数。方便我们的页面组件拿到对…

掌握互联网路由选择协议:从基础入门到实战

文章目录 路由选择协议的基本概念路由选择算法的分类分层次的路由选择协议路由信息协议&#xff08;RIP&#xff09;内部网关协议&#xff1a;OSPF外部网关协议&#xff1a;BGP互联网中的实际应用总结 互联网的路由选择协议是网络通信的核心&#xff0c;它决定了数据包如何在网…

Sentinel初步了解

概念 Sentinel面向分布式、多语言异构化服务框架的流量治理组件。 相关文档https://github.com/alibaba/Sentinel/wiki/ 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务&#xff0c;这就是所谓的“扇出…

Manticore Search(es轻量级替代)

概念&#xff1a; Manticore Search 是一个使用 C 开发的高性能搜索引擎&#xff0c;创建于 2017 年&#xff0c;其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx&#xff0c;显着改进了它的功能&#xff0c;修复了数百个错误&#xff0c;几乎完全重写了代码并保…

MySQL第四次作业

1.修改student表中年龄字段属性&#xff0c;数据类型由int改变为smallint 2.为course表中cno课程学号设置索引&#xff0c;并查看索引 &#xff08;3&#xff09;为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_INDEX &#xff08;4&#xff0…

mysql对数据库的增删改

目录 DML语句&#xff1a; 增加数据&#xff08;insert语句&#xff09; 增加数据&#xff08;insert into select&#xff09; 修改数据&#xff08;update语句&#xff09; 【where 子句条件】 删除数据&#xff08;delete语句&#xff09; 删除数据&#xff08;trunca…

NO.1 Hadoop概述

1.1 Hadoop是什么 1.2 Hadoop优势 1.3 Hadoop组成 1.3.1 HDFS架构概述 1.3.2 YARN架构概述 1.3.3 MapReduce架构概述 1.3.4 HDFS、YARN、MapReduce三者关系 1.4 大数据技术生态体系 1.5 推荐系统框架图

数据结构C++——优先队列

文章目录 一、定义二、ADT三、优先队列的描述3.1 线性表3.2 堆3.2.1 最大堆的ADT3.2.2 最大堆的插入3.2.3 最大堆的删除3.2.4 最大堆的初始化3.3 左高树 LT3.3.1 高度优先左高树HBLT3.3.2 重量优先左高树WBLT3.3.3 最大HBLT的插入3.3.4 最大HBLT的删除3.3.5 合并两棵最大HBLT3.…

QT总结——图标显示坑

最近写代码遇到一个神仙大坑&#xff0c;我都怀疑我软件是不是坏了&#xff0c;这里记录一下。 写qt工程的时候我们一般会设置图标&#xff0c;这个图标是窗体的图标同时也是任务栏的图标&#xff0c;但是我发现生成的exe没有图标&#xff0c;这个时候就想着给他加一个图标&…

AI学习记录 - 激活函数的作用

试验&#xff0c;通过在线性公式加入激活函数&#xff0c;可以拟合复杂的情况&#xff08;使用react实现&#xff0c;原创&#xff09; 结论:1、线性函数的叠加&#xff0c;无论叠加多少次&#xff0c;都是线性的 如下图 示例代码 线性代码&#xff0c;使用ykxb的方式&…

【BUG】已解决:ValueError: All arrays must be of the same length

ValueError: All arrays must be of the same length 目录 ValueError: All arrays must be of the same length 【常见模块错误】 【解决方案】 问题原因 解决方法 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&…

Python爬虫实战案例(爬取图片)

爬取图片的信息 爬取图片与爬取文本内容相似&#xff0c;只是需要加上图片的url&#xff0c;并且在查找图片位置的时候需要带上图片的属性。 这里选取了一个4K高清的壁纸网站&#xff08;彼岸壁纸https://pic.netbian.com&#xff09;进行爬取。 具体步骤如下&#xff1a; …