CF1981D Turtle and Multiplication 题解

Turtle and Multiplication

传送门

Turtle just learned how to multiply two integers in his math class, and he was very excited.

Then Piggy gave him an integer n n n , and asked him to construct a sequence a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an consisting of integers which satisfied the following conditions:

  • For all 1 ≤ i ≤ n 1 \le i \le n 1in , 1 ≤ a i ≤ 3 ⋅ 1 0 5 1 \le a_i \le 3 \cdot 10^5 1ai3105 .
  • For all 1 ≤ i < j ≤ n − 1 1 \le i < j \le n - 1 1i<jn1 , a i ⋅ a i + 1 ≠ a j ⋅ a j + 1 a_i \cdot a_{i + 1} \ne a_j \cdot a_{j + 1} aiai+1=ajaj+1 .

Of all such sequences, Piggy asked Turtle to find the one with the minimum number of distinct elements.

Turtle definitely could not solve the problem, so please help him!

Input

Each test contains multiple test cases. The first line contains the number of test cases t t t ( 1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1t104 ). The description of the test cases follows.

The first line of each test case contains a single integer n n n ( 2 ≤ n ≤ 1 0 6 2 \le n \le 10^6 2n106 ) — the length of the sequence a a a .

It is guaranteed that the sum of n n n over all test cases does not exceed 1 0 6 10^6 106 .

Output

For each test case, output n n n integers a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an — the elements of the sequence a a a .

If there are multiple answers, print any of them.

Example

input #1

3
2
3
4

output #1

114514 114514
1 2 2
3 3 4 4

Note

In the third test case, a = [ 3 , 4 , 2 , 6 ] a = [3, 4, 2, 6] a=[3,4,2,6] violates the second condition since a 1 ⋅ a 2 = a 3 ⋅ a 4 a_1 \cdot a_2 = a_3 \cdot a_4 a1a2=a3a4 . a = [ 2 , 3 , 4 , 4 ] a = [2, 3, 4, 4] a=[2,3,4,4] satisfy the conditions but its number of distinct elements isn’t minimum.

题面翻译

题目描述

请构造一个长度为 n n n 的整数数列 { a n } \{a_n\} {an},满足:

  • 1 ≤ a i ≤ 3 × 1 0 5 1 \le a_i \le 3 \times 10^5 1ai3×105
  • ∀ 1 ≤ i < j ≤ n − 1 \forall 1 \le i<j\le n-1 ∀1i<jn1 ,有 a i a i + 1 ≠ a j a j + 1 a_ia_{i+1} \ne a_ja_{j+1} aiai+1=ajaj+1 ,即:相邻两项之积两两互不相等。

在满足上述要求的基础上,需要让数列中的不同元素个数最少。

输入输出格式

输入第一行一个整数 t t t 表示数据组数。

每组数据的输入包含一行一个整数 n n n ,代表数列长度。

对于每组数据,请输出一行 n n n 个整数,中间由空格分隔,代表你构造的数列。

1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1t104 , 2 ≤ n ≤ 1 0 6 2 \le n \le 10^6 2n106

对于一个测试点中所有测试数据, ∑ n ≤ 1 0 6 \sum n \le 10^6 n106

注明

以上来自 C o d e F o r c e s ,翻译来源:洛谷。 以上来自CodeForces,翻译来源:洛谷。 以上来自CodeForces,翻译来源:洛谷。

BlastMike:额,好像缺了啥?
BestMonkey:CodeForces 你什么时候能完善一下你的 Markdown 格式啊!你知道我复制下来题面还要一个一个删多余的空格吗!你看看人家洛谷啊!
BlastMike:你好像之前说过。

解题思路

可以想到填入质数。题目中 a i ≤ 3 × 1 0 5 a_i\leq 3\times 10^5 ai3×105 ,其中的质数一定可以满足组成。

BlastMike:
在这里插入图片描述
Banksy:愣着干嘛,转图论啊。
Mike:我来冒个泡。

假设我们要填入 N N N 个不同的质数,在任意两个质数之间连边,由于质数可以相同,则可以出现自环,这样子问题就转化为了选择一个质数开始并不断沿着边走 n n n 步,不能走重复的边。

BeatMonkey:这是一个欧拉路问题。
Bell:废话。

  • 如果 N N N 为奇数:度数为 N + 1 N+1 N+1 的点的数量为偶数,必存在一个欧拉回路,最多能形成长度为 N ( N + 1 ) 2 \frac{N(N+1)}{2} 2N(N+1) 的序列。
  • 如果 N N N 为偶数:删去其中的 N 2 2 − 1 \frac{N^2}{2}-1 2N21 条边且删去的边没有两条边有公共的端点,必存在一个欧拉路径,最多能够形成长度为 N 2 2 + 1 \frac{N^2}{2}+1 2N2+1 的路径。

找到最小的能形成长度超过 n n n 的路径的 N N N,再建图跑欧拉路即可。

Code

#include<bits/stdc++.h>
using namespace std;
#define Man main
const int Maxn=3e5+5,Maxm=1500;
int M,Prime_List[Maxn];
bool Mark[Maxn];
bitset<Maxm>Vis[Maxm];
stack<int>Stk;
inline void DFS(int u){if(Vis[u][u]){Vis[u][u]=0;DFS(u);}for(register int i=Vis[u]._Find_first();i<=M;i=Vis[u]._Find_first())if(Vis[u][i]){Vis[u][i]=Vis[i][u]=0;DFS(i);}Stk.push(Prime_List[u]);
}
inline void Solve(){int n;cin>>n;if(n==1){cout<<1<<endl;return;}for(M=1;(M*(M+1)/2)-((M&1)?0ll:((M>>1)-1))<n-1;++M);for(register int i=1;i<=M;++i)Vis[i].set();if(!(M&1))for(register int i=3;i<=M;i+=2)Vis[i][i+1]=Vis[i+1][i]=0;DFS(1);while(!Stk.empty()&&n){cout<<Stk.top()<<" ";Stk.pop();n--;}while(!Stk.empty())Stk.pop();cout<<endl;
}
signed Man(){for(register int i=2,top=0;i<=13000;++i){if(!Mark[i])Prime_List[++top]=i;for(register int j=1;j<=top&&i*Prime_List[j]<=13000;++j){Mark[i*Prime_List[j]]=1;if(!(i%Prime_List[j]))break;}}ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin>>T;while(T--)Solve();return 0;
}

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

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

相关文章

Java [ 基础 ] Stream流 ✨

✨探索Java基础Stream流✨ 在现代Java编程中&#xff0c;Stream是一个非常强大的工具&#xff0c;它提供了一种更高效和简洁的方式来处理集合数据。在这篇博客中&#xff0c;我们将深入探讨Java中的Stream流&#xff0c;介绍它的基础知识、常见操作和一些实用示例。 什么是Str…

10-错误-java.lang.IllegalStateException Stopwatch is not running

10-错误-java.lang.IllegalStateException Stopwatch is not running 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯技术文&…

力扣刷题练习 三【1207.独一无二的出现次数】

前言 数组练题题。 练习三【1207.独一无二的出现次数】 一、题目阅读 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1…

用易查分下发《致家长一封信》,支持在线手写签名,一键导出PDF!

暑假来临之际&#xff0c;学校通常需要下发致家长信&#xff0c;以正式、书面的形式向家长传达重要的通知或建议。传统的发放方式如家长签字后学生将回执单上交&#xff0c;容易存在丢失、遗忘的问题。 那么如何更高效、便捷、安全地将致家长一封信送达给每位家长呢&#xff1f…

Linux[高级管理]——Squid代理服务器的部署和应用(反向代理详解)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月24日11点11分 &#x1f004;️文章质量&#xff1a;95分 目录 ————前言———— Squid的几种模式…

【Python】模型指标阈值计算方法

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 from sklearn.metrics import confusion_matri…

游戏录制视频软件哪个好?这份攻略帮你搞定!

随着游戏行业的快速发展&#xff0c;越来越多的玩家开始录制游戏视频&#xff0c;以便分享自己的游戏体验或保存珍贵回忆。而选择一款合适的游戏录制视频软件显得尤为重要。可是游戏录制视频软件哪个好呢&#xff1f;本文将为大家介绍两款优秀的游戏录制视频软件&#xff0c;通…

【国产开源可视化引擎Meta2d.js】快速上手

提示 初始化引擎后&#xff0c;会生成一个 meta2d 全局对象&#xff0c;可直接使用。 调用meta2d前&#xff0c;需要确保meta2d所在的父容器element元素位置大小已经渲染完成。如果样式或css&#xff08;特别是css动画&#xff09;没有初始化完成&#xff0c;可能会报错&…

Vatee万腾平台:科技驱动,智慧生活

随着科技的飞速发展&#xff0c;我们生活的方方面面正在经历前所未有的变革。Vatee万腾平台&#xff0c;作为这一变革的推动者之一&#xff0c;以其科技驱动的理念&#xff0c;正引领我们迈向更加智慧、便捷的生活。 Vatee万腾平台&#xff0c;是一个集科技研发、应用创新、服务…

Unity热更方案HybridCLR+YooAsset,纯c#开发热更,保姆级教程,从零开始

文章目录&#xff1a; 一、前言二、创建空工程三、接入HybridCLR四、接入YooAsset五、搭建本地资源服务器Nginx六、实战七、最后 一、前言 unity热更有很多方案&#xff0c;各种lua热更&#xff0c;ILRuntime等&#xff0c;这里介绍的是YooAssetHybridCLR的热更方案&#xff0…

jvm性能监控常用工具

在java的/bin目录下有许多java自带的工具。 我们常用的有 基础工具 jar:创建和管理jar文件 java&#xff1a;java运行工具&#xff0c;用于运行class文件或jar文件 javac&#xff1a;java的编译器 javadoc&#xff1a;java的API文档生成工具 性能监控和故障处理 jps jstat…

鸿蒙应用更新跳转到应用市场

鸿蒙没有应用下载安装&#xff0c;只支持跳转到应用市场更新 gotoMarket(){try {const request: Want {parameters: {// 此处填入要加载的应用包名&#xff0c;例如&#xff1a; bundleName: "com.huawei.hmsapp.appgallery"bundleName: com.huawei.hmos.maps.app}}…

浅谈定时器之常数吞吐量定时器

浅谈定时器之常数吞吐量定时器 常数吞吐量定时器的主要目的是在JMeter测试中维持一个恒定的吞吐量&#xff08;通常是每分钟的请求数或事务数&#xff09;&#xff0c;从而确保测试能够以预期的负载水平运行。这对于模拟特定的用户访问模式、进行稳定性测试、负载测试以及压力…

171. Excel 表列序号

给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: columnTitle “A” 输出: 1 示例 2: 输入: columnTitle “…

量化交易 - 策略回测

策略回测 1、什么是策略回测&#xff1f;2、策略回测的作用3、策略回测系统概述3.1策略回测中相关的指标介绍3.2量化交易策略的资金容量3.3 完整的策略回测系统包含哪些内容 1、什么是策略回测&#xff1f; 策略回测&#xff0c;也称之为策略回溯测试&#xff0c;是指利用交易…

北京酒店订房小程序开发的优势与主要功能

随着我国经济与交通的飞速发展&#xff0c;人们出行的次数越来越多&#xff0c;频率也越来越快。无论是出差还是出游&#xff0c;人家对外出酒店的舒适度与便捷度的要求也越来越高。为了满足人们对于酒店的新需求&#xff0c;北京酒店订房小程序与互联网技术相结合&#xff0c;…

Vue监听localstorage变化的方法详解(待更新)

我现在用token做登录身份验证&#xff0c;使用到localStorage&#xff0c;在computed中编写“函数”&#xff0c;根据localStorage的值&#xff0c;在导航栏显示不同的链接&#xff0c;我发现computed中编写的“函数”不会监控localStorage取值的变化 Vue 仅可以对其管理的数据…

pbootcms后台获取前端表单留言页面url

pbootcms在线留言表单&#xff0c;用户在网页前端提交表单成功后&#xff0c;在网站后台如何获取表单留言页面的url这个参数呢&#xff1f;下面举例说明&#xff1a;首先&#xff0c;我们在PBootcms后台对应的表单&#xff0c;添加需要记录的表单字段&#xff0c;例如 添加liuy…

Java面试题:对比HTTP的GET和POST方法,并讨论它们的使用场景

HTTP的GET和POST方法是用于在客户端和服务器之间交换数据的两种基本请求方法。它们有不同的特性和使用场景。 GET方法 特性 数据在URL中传输&#xff1a;GET请求的数据附加在URL的末尾&#xff0c;通过查询字符串传输。数据长度限制&#xff1a;由于浏览器和服务器对URL长度…

算法刷题笔记 双链表(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 实现一个双链表&#xff0c;双链表初始为空&#xff0c;支持5种操作&#xff1a; 在最左侧插入一个数&#xff1b;在最右侧插入一个数&#xff1b;将第k个插入的数删除&#xff1b;在第k个插入的数左侧插入一个数&#xff1b;在第k…