Codeforces Round 931 (Div. 2) ---- E. Weird LCM Operations ---- 题解

E. Weird LCM Operations:

题目大意:

思路解析:

这是一道构造题,那么观察这个构造有啥性质,观察到最多操作次数为 n/6 + 5,然后每次操作需要选择三个数,如果每次操作的三个数都不和之前的重复的话,应该至少需要n/3次,那么容易想到,每次操作应该只需要操作后半部分,且每次操作之间选择的数不重复。

证明:为什么操作后半部分是正确的,假设 n==27,可以发现 13和26本来gcd就是13了,无论26选择哪些数,反正一定会保留13这个因子,则前半部分的gcd是天然满足的。

还可以发现当 选择 13 14 15,这样的两个奇数一个偶数时,一定会同时满足这三个的gcd。

一个奇数两个偶数不行。

三个奇数也可以,但是发现一个偶数,就需要两个奇数,肯定不会有这么多额外的奇数,所以这个性质似乎没什么用

三个偶数,在这三个偶数都不含4这个因子时,也可以满足,这一下就很好的补充了,在一直使用第一个性质后剩余的偶数过多带来的麻烦。

因为第四个性质要求每次需要使用不含4这个因子的偶数,所以跨度为12,则我们需要单独处理n小于14的情况,然后其余情况利用第一个性质和第四个性质。 (这两个性质的配合使用,刚好可以组成一个循环)

代码实现:

import java.io.*;
import java.math.BigInteger;
import java.util.*;import static java.util.Collections.*;public class Main {public static void main(String[] args) throws IOException {int t = f.nextInt();while (t > 0) {solve();t--;}w.flush();w.close();br.close();}public static void solve() {int n = f.nextInt();int[][][] pans = new int[14][][];pans[3]= new int[][]{{1, 2, 3}};pans[4]= new int[][]{{1, 3, 4}};pans[5]= new int[][]{{3, 4, 5}};pans[6]= new int[][]{{1, 3, 5}, {2, 4, 6}};pans[7]= new int[][]{{2, 4, 6}, {3, 5, 7}};pans[8]= new int[][]{{2, 6, 8}, {3, 5, 7}};pans[9]= new int[][]{{1, 3, 5}, {2, 4, 6}, {7, 8, 9}};pans[10]= new int[][]{{3, 4, 5}, {2, 6, 8}, {7, 9, 10}};pans[11]= new int[][]{{2, 6, 8}, {3, 5, 7}, {9, 10, 11}};pans[12]= new int[][]{{1, 11, 12}, {6, 8, 10}, {5, 7, 9}};pans[13]= new int[][]{{1, 13, 12}, {7, 9, 11}, {6, 8, 10}};if(n < 14){w.println(pans[n].length);for (int i = 0; i < pans[n].length; i++) {w.println(pans[n][i][0] + " " + pans[n][i][1] + " " + pans[n][i][2]);}}else {int[][] ans = new int[n / 6 + 5][3];int res = 0;int cur = n;if ((n - 3) % 4 == 0){ans[0][0] = 1; ans[0][1] = 2; ans[0][2] = n;res++;cur --;}else if (n % 4 == 0){ans[0][0] = 1; ans[0][1] = n-1; ans[0][2] = n;res++;cur-=2;}while (cur * 2 > n){if (cur % 2 == 0){ans[res][0] = cur; ans[res][1] = cur - 4; ans[res][2] = cur - 8;res++;ans[res][0] = cur - 3; ans[res][1] = cur - 2; ans[res][2] = cur - 1;res++;ans[res][0] = cur - 7; ans[res][1] = cur - 6; ans[res][2] = cur - 5;res++;ans[res][0] = cur - 11; ans[res][1] = cur - 10; ans[res][2] = cur - 9;res++;}else {ans[res][0] = cur - 2; ans[res][1] = cur - 1; ans[res][2] = cur;res++;ans[res][0] = cur - 6; ans[res][1] = cur - 5; ans[res][2] = cur - 4;res++;ans[res][0] = cur - 10; ans[res][1] = cur - 9; ans[res][2] = cur - 8;res++;ans[res][0] = cur - 11; ans[res][1] = cur - 7; ans[res][2] = cur - 3;res++;}cur -= 12;}w.println(res);for (int i = 0; i < res; i++) {w.println(ans[i][0] + " " + ans[i][1] + " "+ ans[i][2]);}}}static PrintWriter w = new PrintWriter(new OutputStreamWriter(System.out));static Input f = new Input(System.in);static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static class Input {public BufferedReader reader;public StringTokenizer tokenizer;public Input(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = null;}public String next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public String nextLine() {String str = null;try {str = reader.readLine();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return str;}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}public Double nextDouble() {return Double.parseDouble(next());}public BigInteger nextBigInteger() {return new BigInteger(next());}}
}

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

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

相关文章

3月造车新势力销量出炉:问界继续领跑,哪吒下滑,岚图抢眼

进入4月份&#xff0c;各大造车新势力们纷纷公布了3月份最新销量成绩&#xff0c;根据相关数据显示&#xff0c;问界再度超越理想&#xff0c;夺得造车新势力头名的位置。而零跑、蔚来、小鹏的销量也实现不错的增长&#xff0c;岚图汽车的表现同样十分亮眼。不过日前遭到周鸿祎…

Shell与Bash与POSIX与Linux间的关系

shell是什么&#xff1f; Shell的英语翻译是“壳”&#xff0c;其作用也跟名字差不多&#xff0c;为操作系统套个壳&#xff0c;人与操作系统的壳交互。与壳相对应的则是操作系统内核&#xff0c;一个“壳”一个“核”。核从1970年代开始就基本定型了&#xff0c;没什么大的改…

Windows 11安装kb5035853补丁时,提示错误0x800f0922,并且弹出“某些操作未按计划进行,不必担心,正在撤消更改。请不要关机”

Windows 11安装kb5035853补丁时&#xff0c;提示错误0x800f0922&#xff0c;并且还在重启后弹出“某些操作未按计划进行&#xff0c;不必担心&#xff0c;正在撤消更改。请不要关机”&#xff0c;按微软官方的作法是&#xff1a;https://learn.microsoft.com/zh-cn/windows/rel…

精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)

精准扶贫管理系统目录 目录 基于Springboot的精准扶贫管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 &#xff08;1&#xff09;用户信息管理 &#xff08;2&#xff09;贫困户信息管理 &#xff08;3&#xff09;新闻类型管理 &a…

YooAssets 使用相关

## 使用 YooAssets 动态加载原生文件时候 > 原生文件&#xff1a;txt&#xff1b;json&#xff1b;等需要直接保存文件内string字符的文件 需要将打包方式设置成为&#xff0c;PackRawFile 并且加载时候使用 API &#xff1a; YooAssets.LoadRawFileSync()YooAssets.LoadRa…

腾讯云轻量4核8G12M应用服务器性能测评和优惠价格表

腾讯云4核8G服务器价格&#xff1a;轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线&#xff1f;支持30个并发数&#xff0c;可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

16.springboot项目下使用事务(springboot-016-transaction)

事务是一个完整的功能&#xff0c;也叫作是一个完整的业务 事务只跟什么SQL语句有关&#xff1f;事务只跟DML语句有关系&#xff1a;增删改 DML,DQL,DDL,TCL,DCL 首先添加两个依赖以及MyBatis代码自动生成插件 <!--MySql驱动--><dependency><groupId>mysql…

腾讯云4核8g服务器承载量?4C8G能支持多少人?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

Python快速入门系列-10(Python进阶与扩展)

第十章:Python进阶与扩展 10.1 Python与其他语言的整合10.1.1 使用Python的C API示例:使用C API创建一个简单的Python扩展10.1.2 使用Cython加速Python代码示例:使用Cython编写一个快速的矩阵乘法函数10.1.3 使用SWIG创建接口示例:使用SWIG为C++类生成Python接口10.2 Pytho…

Prisma ORM 5.12 发布,支持 Cloudflare D1 数据库

昨晚&#xff0c;Prisma ORM 发布了 5.12.0 稳定版本&#xff0c;在此版本中 Prisma ORM 新增了对 Cloudflare D1 的预览支持&#xff0c;现在我们可以选择将本地的 SQLite 数据库逐步迁移到 Cloudflare 上面&#xff0c;从而实现无需额外成本即可构建处理大量用户的应用程序。…

OpenKylin安装MySQL

在麒麟操作系统上安装MySQL&#xff0c;可以通过以下步骤进行&#xff1a; 1、更新系统包列表&#xff1a; sudo apt-get update2、安装MySQL服务 sudo apt-get install mysql-server3、进行安全设置&#xff0c;设置root密码和是否允许匿名登陆之类 sudo mysql_secure_ins…

Redis数据库②高可用+持久化+性能管理

目录 一.高可用 二.持久化 1.Redis 提供两种方式进行持久化 2.RDB 持久化 &#xff08;1&#xff09;手动触发 &#xff08;2&#xff09;自动触发 &#xff08;3&#xff09;执行流程 &#xff08;4&#xff09;启动时加载 3.AOF持久化 &#xff08;1&#xff09;开…

SpringBoot整合Flowable/Activiti

SpringBoot版本: 2.0.1.RELEASE Flowable版本: 6.3.1 Activiti版本: 6.0.0 一.添加pom依赖 因为之前我整合的时候有报错关于sqlsession的错误,后面查询文章才发现flowable要排除掉mybatis,又没说具体排除哪一个,所以我这干脆全部排除了 <!-- Flowable dependencies -->…

【Java SE】继承

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 继承1.1 继承是什么1.2 继承的意义1.3 继承的语法1.4 继承的方式1.5 子类中访问父类成员1.5.1 子类中访问…

js类型转换

类型转换只有这四种&#xff0c;例如如果要对象转数字&#xff0c;那么就需要先把对象转成原始类型&#xff0c;再从原始类型转到数字。 空数组转原始类型是一个空字符串。空对象转原始类型是[object Object]。 let a {} console.log(a);// NaN //等价于 a->原始 然后原始…

北京大学创新推出ManipLLM黑科技 | 大幅提升机器人操作的鲁棒性与智能性

机器人操作依赖于准确预测接触点和执行器方向以确保成功操作。然而&#xff0c;基于学习的机器人操作&#xff0c;在模拟器中仅针对有限类别进行训练&#xff0c;往往难以实现泛化&#xff0c;特别是在面临大量类别时。 因此&#xff0c;作者提出了一种创新的方法&#xff0c;…

网络安全基础之网络协议与安全威胁

OSI(OpenSystem Interconnect)&#xff0c;即开放式系统互联。 一般都叫OSI参考模型&#xff0c;是ISO(国际标准化组织)组织在1985年研究的网络互联模型。 网络协议的简介&#xff1a; 定义&#xff1a;协议是网络中计算机或设备之间进行通信的一系列规则集合。 什么是规则?…

Android操作sqlite数据库

Sqlite数一种轻量级的关系型数据库&#xff0c;android里面可以用来持久化存储一些用户数据。 一、SQLiteOpenHelper方式 SQLiteOpenHelper是原生的数据库帮助类&#xff0c;继承这个类&#xff0c;用来创建&#xff0c;更新数据库的操作 public class MySqliteOpenHelper e…

算法整理:链表

链表定义 struct ListNode { int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {} }; 链表的遍历&#xff1a;ListNode phead; while(p!null) pp.next; 找到链表的尾结点&#xff1a;phead; while(p.next!null)pp.next; 链表节点的个数&#xff1a; phead…

蓝桥杯真题:七段码

import java.util.Scanner; import java.util.ArrayList; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args){// 连接关系图int[][] map new int[][]{{0, 1, 0, 0, 0, 1, 0},{1, 0, 1, 0, 0, 0, 1},{0, 1, 0, 1, 0, 0…