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://xiahunao.cn/news/3267378.html

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

相关文章

电量采集模块—应用于工厂车间配电室电网监测系统的搭建

前言 随着社会经济发展&#xff0c;工厂配电电网系统的供电实时监测越来越重要&#xff0c;这不仅是影响工厂安全性&#xff0c;更是工厂自动化的必然环节。工厂电力监测具有长时间在线工作的可靠性、较强的现场操作和与中心站的通讯功能&#xff0c;同时具有长时间记录存储数据…

HarmonyOS 请求相应HTTPS概览

1.HTTP概述 请求和响应 2.HTTP请求开发步骤 2.1.module.json5中添加 ohos.permission.INTERNET 2.2.导入http模块 2.3.创建htppt请求 2.4.发起请求 2.5.处理响应 2.6.销毁http对象 3.几个基本概念&#xff1a; 3.1.Webview&#xff1a;提供We…

购买反向链接是明智的吗?

​在商业世界里&#xff0c;免费的午餐几乎是不存在。即便你的网站内容质量再好&#xff0c;也很难指望别人会无偿为你提供反向链接。购买反向链接绝对是明智的选择&#xff0c;纵观任何一个有排名的大网站&#xff0c;外链数量起码几千条打底&#xff0c;难不成你打算一条一条…

Linux的yum源安装MySQL5.7

linux的yum源安装MySQL5.7 一、MySQL 1、简介 MySQL 是一种流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典公司 MySQL AB 开发&#xff0c;后来被 Oracle Corporation 收购。它是一个开源软件&#xff0c;提供了高效、稳定和可靠的数据管理解决…

在 ArchLinux 上编译运行 axmol 引擎

本文将在 Windows 10 上安装 Arch WSL 中编译 axmol 请确保 WSL2 已正确安装 1. 在微软应用商店安装 ArchLinux 2. 打开 Arch&#xff0c;按照提示输入用户名和密码&#xff0c;尽量简单 3. 配置清华源&#xff0c;速度快的起飞&#xff0c;否则&#xff0c;各种包会安装失败…

Animate软件基础:复制、粘贴、删除或移动帧或帧序列

关键帧和其之后的常规帧范围称为关键帧序列。时间轴可以包含任意数量的关键帧序列。 FlashASer&#xff1a;Animate 2022零基础应用教程之教师篇https://zhuanlan.zhihu.com/p/555447498 FlashASer&#xff1a;Animate教程及作品源文件https://zhuanlan.zhihu.com/p/67743743…

Roadmap模板

https://www.officetimeline.com/roadmaps https://venngage.com/blog/product-roadmap/ https://roadmunk.com/guides/roadmap-definition/

数据结构 | LinkedList与链表

前言 ArrayList底层使用连续的空间,任意位置(尤其是0位置下标)插入或删除元素时,需要将该位置后序元素 整体 往前或往后搬移,故时间复杂度为O(N). 优点(给定一个下标,可以快速查找到对应的元素,时间复杂度为O(1))增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗.增容一…

Vue3计算属性终极实战:可媲美Element Plus Tree组件研发之节点勾选

前面完成了JuanTree组件的节点编辑和保存功能后&#xff0c;我们把精力放到节点勾选功能实现上来。**注意&#xff0c;对于组件的开发者来说&#xff0c;要充分考虑用户的使用场景&#xff0c;组件提供的多个特性同时启用时必须要工作良好。**就拿Tree组件来说&#xff0c;用户…

标准IO

目录 思维导图&#xff1a; 学习内容&#xff1a; 1. IO基础 2. 标准IO 2.1 标准IO提供的内容 2.2 FILE结构体 2.2.1 结构体解析 2.3 fopen 打开文件 2.4 fclose&#xff1a;关闭文件 例如&#xff1a; 2.5 fgetc\fputc:单字符的输入输出 例如&#xff1a; 2.6 错…

概率论--最大似然估计

目录 概念 基本原理 应用领域 实际应用案例 优缺点 优点&#xff1a; 缺点&#xff1a; 延伸 最大似然估计在机器学习中的具体应用案例是什么&#xff1f; 如何解决最大似然估计在处理小样本数据时的偏差问题&#xff1f; 最大似然估计与其他参数估计方法&#xff08…

uniapp手写滚动选择器

文章目录 效果展示HTML/Template部分&#xff1a;JavaScript部分&#xff1a;CSS部分&#xff1a;完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能&#xff0c;可以选择小时和分钟&#xff1a; HTML/Template部分&#xff1a; <picker…

【文件fd】文件描述符fd | 文件描述表

目录 1.文件描述符fd 2.系统调用的0/1/2 3.C语言的stdin/stdout/stderr 4.系统调用的0/1/2和C语言的stdin/stout/stderr二者的关系❓ 5.文件描述表 5.1 文件描述符概念 5.3 文件对象strcut file 5.4 进程和文件对应关系 5.5 文件描述符理解 5.6 源码查看 1.文件描述…

AI行业合适做必应bing推广吗?怎么开户呢?

快速发展的AI行业中&#xff0c;有效的市场获客渠道是关键&#xff0c;随着数字营销领域的不断演进&#xff0c;必应Bing以其独特的市场定位、庞大的用户基础和高效的广告系统&#xff0c;成为AI企业推广策略中的重要一环。特别是针对那些寻求精准触达、高效转化的AI企业而言&a…

C++初级学习:⼊⻔基础

本文内容&#xff1a; 1.C参考⽂档&#xff1a;2.C第一个程序3.命名空间3.1namespace的价值3.2namespace的定义3.3命名空间的使用 4.C输⼊&输出5.缺省参数6.函数重载 1.C参考⽂档&#xff1a; https://legacy.cplusplus.com/reference/ https://zh.cppreference.com/w/cp…

【React】JSX:从基础语法到高级用法的深入解析

文章目录 一、什么是 JSX&#xff1f;1. 基础语法2. 嵌入表达式3. 使用属性4. JSX 是表达式 二、JSX 的注意事项1. 必须包含在单个父元素内2. JSX 中的注释3. 避免注入攻击 三、JSX 的高级用法1. 条件渲染2. 列表渲染3. 内联样式4. 函数作为子组件 四、最佳实践 在 React 开发中…

【C++】19.红黑树模拟实现 set 和 map

我们想要实现STL中的set和map&#xff0c;那么第一步就需要看一下库函数是如何实现的&#xff1a; 通过查看源代码我们发现两个容器都包含了stl_tree.h&#xff0c;因此我们猜测此头文件实现的是红黑树。 但是set和map很显然不是使用同一棵树实现的&#xff0c;那么STL库是怎么…

C# Nmodbus,EasyModbusTCP读写操作

Nmodbus读写 两个Button控件分别为 读取和写入 分别使用控件的点击方法 ①引用第三方《NModbus4》2.1.0版本 全局 public SerialPort port new SerialPort("COM2", 9600, Parity.None, 8, (StopBits)1); ModbusSerialMaster master; public Form1() port.Open();…

Beam Search 原理详解

文章目录 1. 前言2. 原理3. 举例4. 参考 1. 前言 Beam Search 是一种启发式图搜索算法&#xff0c;用于在图或树的搜索过程中寻找最有可能的路径。它常用于自然语言处理&#xff08;NLP&#xff09;中的序列生成任务&#xff0c;如机器翻译、语音识别和文本生成等。与穷举搜索…

渲染技术如何帮助设计内容实现从平面到立体的转换

随着数字艺术和视觉特效的飞速发展&#xff0c;三维建模与渲染技术在影视、游戏、广告、工业设计、建筑可视化等多个领域展现出了其不可或缺的重要性。这一技术不仅实现了从平面到立体的跨越&#xff0c;还极大地丰富了视觉表达的层次感和真实感。 三维建模&#xff1a;构建虚…