GESP202412 四级【Recamán】题解(AC)

在这里插入图片描述
》》》点我查看「视频」详解》》》

[GESP202412 四级] Recamán

题目描述

小杨最近发现了有趣的 Recamán 数列,这个数列是这样生成的:

  • 数列的第一项 a 1 a_1 a1 1 1 1
  • 如果 a k − 1 − k a_{k-1}-k ak1k 是正整数并且没有在数列中出现过,那么数列的第 k k k a k a_k ak a k − 1 − k a_{k-1}-k ak1k,否则为 a k − 1 + k a_{k-1}+k ak1+k

小杨想知道 Recamán 数列的前 n n n 项从小到大排序后的结果。手动计算非常困难,小杨希望你能帮他解决这个问题。

输入格式

第一行,一个正整数 n n n

输出格式

一行, n n n 个空格分隔的整数,表示 Recamán 数列的前 n n n 项从小到大排序后的结果。

样例 #1

样例输入 #1

5

样例输出 #1

1 2 3 6 7

样例 #2

样例输入 #2

8

样例输出 #2

1 2 3 6 7 12 13 20

提示

样例解释

对于样例 1, n = 5 n=5 n=5

  • a 1 = 1 a_1=1 a1=1
  • a 1 − 2 = − 1 a_1-2=-1 a12=1,不是正整数,因此 a 2 = a 1 + 2 = 3 a_2=a_1+2=3 a2=a1+2=3
  • a 2 − 3 = 0 a_2-3=0 a23=0,不是正整数,因此 a 3 = a 2 + 3 = 6 a_3=a_2+3=6 a3=a2+3=6
  • a 3 − 4 = 2 a_3-4=2 a34=2,是正整数,且没有在数列中出现过,因此 a 4 = a 3 − 4 = 2 a_4=a_3-4=2 a4=a34=2
  • a 4 − 5 = − 3 a_4-5=-3 a45=3,不是正整数,因此 a 5 = a 4 + 5 = 7 a_5=a_4+5=7 a5=a4+5=7

a 1 , a 2 , a 3 , a 4 , a 5 a_1,a_2,a_3,a_4,a_5 a1,a2,a3,a4,a5 从小到大排序的结果为 1 , 2 , 3 , 6 , 7 1,2,3,6,7 1,2,3,6,7

数据范围

对于所有数据点,保证 1 ≤ n ≤ 3 000 1\le n\le 3\, 000 1n3000

AC_Code

#include <bits/stdc++.h>
using namespace std;
const int N = 3010;
int w[N];int main()
{int n;cin >> n;w[1] = 1;set<int> s;s.insert(1);for(int i = 2; i <= n; i ++){int x = w[i - 1] - i;if(x > 0 && s.find(x) == s.end()) w[i] = x;else w[i] = w[i - 1] + i;s.insert(w[i]);}sort(w + 1, w + n + 1);for(int i = 1; i <= n; i ++)cout << w[i] << " ";return 0;
}

》》》点我查看「视频」详解》》》

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

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

相关文章

「数据结构详解·十五」树状数组

「数据结构详解一」树的初步「数据结构详解二」二叉树的初步「数据结构详解三」栈「数据结构详解四」队列「数据结构详解五」链表「数据结构详解六」哈希表「数据结构详解七」并查集的初步「数据结构详解八」带权并查集 & 扩展域并查集「数据结构详解九」图的初步「数据结构…

如何通过python实现一个web自动化测试框架?

一、首先你得知道什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver和Selenium Grid。 Selenium IDE&#…

在python中使用“while”和“for”循环

编写代码时&#xff0c;一个常见的难题是让其执行未知次数的任务。 在本单元中&#xff0c;你希望允许用户输入行星名称列表。 遗憾的是&#xff0c;你不知道用户输入了多少名称。 若要支持次数未知的循环&#xff0c;可以使用 while 循环。 while 循环在当某个条件为 true 时…

[Rust开发]actix_web::middleware 中间件

actix_web::middleware 在 Actix Web 框架中扮演着重要的角色&#xff0c;它允许开发者在处理 HTTP 请求和响应的过程中插入自定义的逻辑。中间件可以在请求到达处理函数之前或响应返回给客户端之前执行&#xff0c;从而实现日志记录、身份验证、数据验证、错误处理等功能。 为…

如何使用 Python 发送 HTTP 请求?

在Python中发送HTTP请求最常用的库是requests&#xff0c;它提供了简单易用的API来发送各种类型的HTTP请求。 除此之外&#xff0c;还有标准库中的http.client&#xff08;以前叫做httplib&#xff09;和urllib&#xff0c;但它们相对更底层&#xff0c;代码量较大&#xff0c…

C++ 中面向对象编程如实现数据隐藏

在C中&#xff0c;面向对象编程&#xff08;OOP&#xff09;通过封装&#xff08;Encapsulation&#xff09;来实现数据隐藏。封装是OOP的一个核心概念&#xff0c;它允许将对象的属性和行为&#xff08;即数据和方法&#xff09;组合在一起&#xff0c;并对外隐藏对象的内部实…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…

OpenCV中的边缘检测和轮廓处理

在图像处理和计算机视觉任务中&#xff0c;边缘检测和轮廓处理是非常重要的步骤。OpenCV库提供了多种函数来实现这些功能&#xff0c;包括Sobel算子、Laplacian算子、Canny算子、findContours函数、drawContours函数以及透视变换函数等。本文将详细介绍这些函数的功能、参数、返…

flex 弹性布局 笔记

<style> /* flex-direction &#xff08;即项目的排列方向&#xff09; flex-wrap &#xff08;换行&#xff09; flex-flow &#xff08; flex-direction属性和flex-wrap属性的简写形式&#xff09; justify-content &#xff08;项目的对齐方向&#xff09;主轴…

解决vue2中更新列表数据,页面dom没有重新渲染的问题

在 Vue 2 中&#xff0c;直接修改数组的某个项可能不会触发视图的更新。这是因为 Vue 不能检测到数组的索引变化或对象属性的直接赋值。为了确保 Vue 能够正确地响应数据变化&#xff0c;你可以使用以下几种方法&#xff1a; 1. 使用 Vue.set() 使用 Vue.set() 方法可以确保 …

记录:ubuntu24.04源码安装nginx

一. 下载Nginx源码 两个地址二选一即可 Nginx官网Nginx官网 Github eg&#xff1a;nginx-1.27.3.tar.gz 下载到 ubuntu24.04 的 Downloads &#xff0c;解压 cd Downloads tar -zxvf nginx-1.27.3.tar.gz二. 编译安装 Note: 编译最好用 root 权限&#xff0c; 使用下面命令…

在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序

在AWS EMR&#xff08;Elastic MapReduce&#xff09;上构建一个高效的ETL程序&#xff0c;使用Hive作为数据仓库&#xff0c;Spark作为计算引擎&#xff0c;Airflow作为调度工具时&#xff0c;有几个关键的设计与实施方面需要注意。 在AWS EMR上构建高效的ETL程序&#xff0c;…

CNCF云原生生态版图

CNCF云原生生态版图 概述什么是云原生生态版图如何使用生态版图 项目和产品&#xff08;Projects and products&#xff09;会员&#xff08;Members&#xff09;认证合作伙伴与提供商&#xff08;Certified partners and providers&#xff09;无服务&#xff08;Serverless&a…

【java】finalize方法

目录 1. 说明2. 调用过程3. 注意事项 1. 说明 1.finalize方法是Java中Object类的一个方法。2.finalize方法用于在对象被垃圾回收之前执行一些清理工作。3.当JVM&#xff08;Java虚拟机&#xff09;确定一个对象不再被引用、即将被回收时&#xff0c;会调用该对象的finalize方法…

小程序开发实战项目:构建简易待办事项列表

随着移动互联网的飞速发展&#xff0c;小程序以其便捷性、即用即走的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是电商平台的购物助手&#xff0c;还是餐饮行业的点餐系统&#xff0c;小程序都在各个领域发挥着巨大的作用。 小程序开发基础 1. 小程序简介 小程序是…

wsl2子系统ubuntu发行版位置迁移步骤

默认的wsl2发行版是安装在windos的c盘&#xff0c;占用空间较大&#xff0c;有迁移需求&#xff0c;也可以迁移到其他电脑&#xff1b; 查看现有发行版信息 运行以下命令查看现有的 WSL 发行版及其状态&#xff1a; wsl --list --verbose# 输出示例NAME STATE …

SpringBoot基于Redis+WebSocket 实现账号单设备登录.

引言 在现代应用中&#xff0c;一个账号在多个设备上的同时登录可能带来安全隐患。为了解决这个问题&#xff0c;许多应用实现了单设备登录&#xff0c;确保同一个用户只能在一个设备上登录。当用户在新的设备上登录时&#xff0c;旧设备会被强制下线。 本文将介绍如何使用 Spr…

加速合并,音频与字幕的探讨

因上一节。合并时速度太慢了。显卡没用上。所以想快一点。1分钟的视频用了5分钟。 在合并视频时,进度条中的 now=None 通常表示当前处理的时间点没有被正确记录或显示。这可能是由于 moviepy 的内部实现细节或配置问题。为了加快视频合并速度并利用 GPU 加速,可以采取以下措…

MVC配置文件及位置

配置文件位置 默认位置 WEB-INF目录下&#xff0c;文件名&#xff1a;<servlet-name>-servlet.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.…

代码随想录算法训练营打卡第35天:背包问题

前言 zaccheo打卡代码随想录第35天 由于这段时间工作太忙了&#xff08;加上我的懒病犯了&#xff09;导致迟打卡了好几天555555.。。。 今天的主要是动态规划中的背包问题&#xff0c;这个真的是蛮难理解的&#xff0c;我把我自己强行按在椅子上半个小时一点一点的看卡哥文章…