CF1514 C. Product 1 Modulo N [妙妙题]

传送门:CF

[前题提要]:感觉这道题是真的妙,解这道题的所有步骤都是一步一步按图索骥来的,有种玩解密游戏的感觉


题目很简单,就是求1~n中最长的子序列,使得这n个数的乘积模n为1.

乍一看很不好解决.那不妨先假设我们挑选了 k k k个数,然后这 k k k个数的乘积为 K K K, K K K n n n为1.也就是说 K = x n + 1 K=xn+1 K=xn+1,考虑解这个不定方程,根据裴属定理,我们会发现 g c d ( K , n ) ∣ 1 gcd(K,n)|1 gcd(K,n)∣1,也就是说我们选的数的乘积必须得与 n n n互质.这就意味着我们选的每一个数都得与 n n n互质.

很好,现在我们可以将序列中所有与 n n n不互质的数去掉了,剩下的都是与 n n n互质的数.我们想要留下来的数最多,所以我们考虑删掉最少的数,然后满足我们的题意.此时如果我们剩下来的数的乘积模 n n n就为1的话,此时我们的答案显然就是这个序列中的数.如果不是的话,我们假设此时的乘积 K K K,满足一下条件, K = x n + b K=xn+b K=xn+b,显然,因为我们的 K K K n n n互质,所以我们的 b b b也必然与我们的 n n n互质,我们现在需要的是余数为 1 1 1,也就是把 b b b变为1,因为 b b b n n n互质,所以 b b b必然在我们选的序列中,所以此时我们只要把 b b b这个数从我们的序列中删掉即可.此时我们的序列模 n n n的余数就必然为 1 1 1

最后感慨一下:这道题是真的妙.


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
#define int long long
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
signed main() {int n=read();vector<int>v;int num=1;for(int i=1;i<=n;i++) {if(gcd(i,n)==1) {v.push_back(i);num=num*i%n;}}if(num==1) {cout<<v.size()<<endl;for(auto i:v) cout<<i<<" ";cout<<endl;}else {cout<<v.size()-1<<endl;for(auto i:v) {if(i==num) continue;cout<<i<<" ";}cout<<endl;}return 0;
}

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

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

相关文章

【Unity】流体模拟(更新ing)

Fluid Simulation 参考于 Sebastian Lague 的项目进行分析学习 流体模拟视频链接 文章目录 Fluid Simulation2D流体Simulation2D.cs 2D流体 Simulation2D.cs 流体的边界用OnDrawGizmos设置流体的边界 void OnDrawGizmos(){Gizmos.color new Color(0, 1, 0, 0.4f);Gizmos.Dr…

vue中绑定class样式和条件渲染

绑定class样式 字符串写法&#xff1a; 适用于&#xff1a; 样式的类名不确定&#xff0c;需要动态指定 数组写法&#xff1a; 适用于&#xff1a; 要绑定的样式个数不确定&#xff0c;名字也不确定 绑定对象&#xff1a;适用于&#xff1a;要绑定的样式个数确定、名字确定、…

Python loglog()函数

常用坐标下的图像显示 import matplotlib.pyplot as plt import numpy as np import mathplt.figure() x_input np.linspace(1, 10, 50) y_input x_input**2plt.plot(x_input, y_input,r-,linewidth2) plt.show()在loglog函数尺度下的曲线 plt.loglog(x_input, y_input,r-,…

机器人走迷宫问题

题目 1.房间有XY的方格组成&#xff0c;例如下图为64的大小。每一个方格以坐标(x,y) 描述。 2.机器人固定从方格(0, 0)出发&#xff0c;只能向东或者向北前进&#xff0c;出口固定为房间的最东北角&#xff0c;如下图的 方格(5,3)。用例保证机器人可以从入口走到出口。 3.房间…

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制

文章目录 1. javap -version 版本信息2. javap -verbose 输出附加信息3. javap -l 显示行号和局部变量列表4. javap -c 对代码进行反汇编&#xff08;或叫反编译生成汇编代码&#xff0c;一般说反编译是生成java代码&#xff09;&#xff0c;分解方法代码&#xff0c;也就是显示…

想要成为CSS大师?这些技巧是你必须知道的!

前言 CSS 是网页设计中不可或缺的一部分&#xff0c;掌握一些实用的 CSS 技巧&#xff0c;可以让你在设计中展现出更多的创意和个性。本文将介绍一些 CSS 技巧&#xff0c;帮助你提升自己的技能&#xff0c;成为一个真正的 CSS 大师。 1. 改变 input 自动填充的背景颜色 这段 …

Ansible的dict的key里包含圆点.

环境 管理节点&#xff1a;CentOS Stream release 9控制节点&#xff1a;同上Ansible&#xff1a;2.15.4 从文件读取yaml数据 假设目标机器上有文件 data.yml 内容如下&#xff1a; a:b: 111c: 222d.e: 333现在要读取该文件内容&#xff0c;并转成yaml数据。 创建文件 tes…

高精度算法【Java】(待更新中~)

高进度加法 在Java中可以使用BigInteger进行高精度计算&#xff0c;除此也可以仿照竖式相加的计算原理进行计算。 BigInteger 提供所有 Java 的基本整数操作符的对应物&#xff0c;并提供 java.lang.Math 的所有相关方法。另外&#xff0c;BigInteger 还提供以下运算&#xff1…

UE5像素流送详细教程,以及解决黑边和鼠标消失问题

说明 本文是阅读UE5官方文档并且实践之后写的读书笔记,更多详细内容读者可以参考官方文档,本文只是因为在follow官方文档时发现有些操作界面不一样,有些细节遗漏了,所以才自己整理一篇笔记,以备后续使用。 读者按该文件指引操作后,可完成本地发布一个游戏,使用像素流网…

ts 联合react 实现ajax的封装,refreshtoken的功能

react ts混合双打&#xff0c;实现ajax的封装&#xff0c;以及401的特殊处理 import axios from axios import {AMDIN_EXPIRES_KEY,AMDIN_KEY,AMDIN_REFRESH_EXPIRES_KEY,AMDIN_REFRESH_KEY,COMMID_KEY,getToken,removeToken } from ../utils/user-token import { showMessage…

C#入门(7):接口详细介绍与代码演示

在C#中&#xff0c;接口是一种定义行为的契约。接口可以定义方法、属性、索引器和事件的签名&#xff0c;但它们都没有实现&#xff08;即&#xff0c;接口包含的都是抽象成员&#xff09;。任何实现了特定接口的类都需要提供接口定义的所有成员的具体实现。 C#接口的一些主要…

vscode运行dlv报错超时

描述 点击F5运行dlv调试go代码时报错&#xff1a;couldnt start dlv dap: connection timeout 解决方式 在网上搜索这个报错&#xff0c;据说是dlv的配置问题&#xff0c;修改配置后还是不行。有人说是dlv和go的版本不匹配&#xff0c;就朝这个方向试试 go版本改为1.19之后…

网上被吹爆的Spring Event事件订阅有缺陷,不要用

Spring Event事件订阅框架&#xff0c;被网上一些人快吹上天了&#xff0c;然而我们在新项目中引入后发现&#xff0c;这个框架缺陷很多&#xff0c;玩玩可以&#xff0c;千万不要再公司项目中使用。还不如自己手写一个监听者设计模式&#xff0c;那样更稳定、可靠。 之前我已…

C# params关键字

在C#中&#xff0c;params关键字用于指定一个方法参数&#xff0c;它可以接受任意数量的参数&#xff0c;或者说是一个参数数组。当使用params关键字时&#xff0c;你可以向方法传递逗号分隔的参数列表&#xff0c;或者是一个数组。在方法内部&#xff0c;这些参数被处理为一个…

ARM CoreLink CCN 互连总线介绍

NIC NOC CCI CMN CNN NI cmn-700 nic-700 ni-700 MLGB这都是啥玩意? 后期博文或视频将会更新这一系列。今天先温习一下CNN的概念,这是来自2014年的文章,然后稍微整理总结一番。 以下是正文… 现代主流和优质 ARM 片上系统 (SoC) 产品使用 CoreLink 缓存一致性网络 (CCN) 504…

SpringBoot-过滤器Filter+JWT令牌实现登录验证

登录校验-Filter 分析 过滤器Filter的快速入门以及使用细节我们已经介绍完了&#xff0c;接下来最后一步&#xff0c;我们需要使用过滤器Filter来完成案例当中的登录校验功能。 我们先来回顾下前面分析过的登录校验的基本流程&#xff1a; 要进入到后台管理系统&#xff0c;我…

java 位运算 表示状态小记

单一状态码var i2 1 << 2; //4 左移var i3 1 << 3; //8 左移var i4 1 << 4; //16 左移var i5 1 << 5; //32 左移数据状态值var huo i3 | i4 | i2; //28 或//判断状态System.out.println("yu1" (huo & i2)); // 4 & 与System.o…

CentOS 安装etcd集群 —— 筑梦之路

环境说明 192.168.1.11 192.168.1.12 192.168.1.13 yum在线安装 yum install etcd -y #etcd01 cat > /etc/etcd/etcd.conf <<EOF ETCD_NAMEetcd01 ETCD_LISTEN_PEER_URLS"http://0.0.0.0:2380" ETCD_LISTEN_CLIENT_URLS"http://0.0.0.0:2379&quo…

IDEA运行thymeleaf的html文件打开端口为63342且连不上数据库

这边贴apple.html代码 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>User List</title> </head> <body> <h1>User List</h1> <table&…

elementui表格自定义指令控制显示哪些列可以拖动

Vue.directive(tableBorder, function (el, {value}) {// value允许传字符串数字和数组el.classList.add(z_table_hasBorder)let hasStyle el.querySelector(style)if(hasStyle){hasStyle.remove()}let style document.createElement(style)let str .z_table_hasBorder .el…