题目链接


\(Description\)

对于一个序列\(a_i\),定义其前缀积序列为\(a_1\ \mathbb{mod}\ n,\ (a_1a_2)\ \mathbb{mod}\ n,...,(a_1a_2...a_n)\ \mathbb{mod}\ n\)。
给定\(n\),求一个\(n\)的排列,使得该排列的前缀积序列是\([0,1,2,...,n-1]\)的一个排列。无解输出\(NO\)。
\(n\leq10^5\)。

\(Solution\)

考虑无解的情况。因为\(n!\equiv0\ (\mathbb{mod}\ n)\),所以\((n-1)\not\equiv0\ (\mathbb{mod}\ n)\)。
\(n\)为质数显然可以满足。否则设\(n=pq\)。
若\(p\neq q\),那么有\((n-1)!\equiv0\ (\mathbb{mod}\ n)\),GG了。
若\(p=q\),当\(n>4\)时,\(2p<n\),所以也有\((n-1)!\equiv0\ (\mathbb{mod}\ n)\),GG。
所以\(n\)为大于\(4\)的合数时无解。特判一下\(n=4\)。

首先\(a_1\)要填\(1\),\(a_n\)要填\(n\)。
考虑能不能直接让前缀积序列变成\(1,2,...,0\)。那么\(a_i=\frac{i}{i-1}\ \mathbb{mod}\ n,\ i>1\)。
只需要判断是否有\(\frac{a}{a-1}=\frac{b}{b-1},\ 1\lt a\neq b\lt n\)。
稍微化一下,\(\frac{a}{a-1}=1+\frac1a,\ \frac{b}{b-1}=1+\frac1b\),而我们知道每个数的逆元是唯一的,所以这么做就OK啦。


//46ms  600KB
#include <cstdio>
#include <algorithm>
typedef long long LL;
const int N=1e5+5;int A[N],inv[N];bool IsPrime(int x)
{int t=0;for(int i=2; x!=1; ++i)while(!(x%i)){x/=i;if(++t>1) return 0;}return 1;
}int main()
{int n; scanf("%d",&n);if(n==4) return printf("YES\n1\n3\n2\n4\n"),0;if(!IsPrime(n)) return puts("NO"),0;A[1]=1, A[n]=n, inv[1]=1;for(int i=2; i<n; ++i) inv[i]=1ll*(n-n/i)*inv[n%i]%n, A[i]=1ll*i*inv[i-1]%n;puts("YES");for(int i=1; i<=n; ++i) printf("%d\n",A[i]);return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/10518469.html

Codeforces.487C.Prefix Product Sequence(构造)相关推荐

  1. Codeforces 26B. Regular Bracket Sequence

    Codeforces 26B. Regular Bracket Sequence 传送门:https://codeforces.com/problemset/problem/26/B 题目大意: 其实 ...

  2. Codeforces 1462 A. Favorite Sequence

    Codeforces 1462 A. Favorite Sequence 思路分析: 看着题怪长,其实就是类似与回文字符串,搞一个双指针就好了 AC代码: #include <iostream& ...

  3. CodeForces - 1364C Ehab and Prefix MEX(贪心+构造)

    题目链接:点击查看 题目大意:给出一个数组 a ,要求构造一个数组 b ,使得 a[ i ] = MEX{ b[ 1 ] , b[ 2 ] , ... b[ i - 1 ] , b[ i ] },a[ ...

  4. Codeforces C1. Prefix Flip (Easy Version) (二进制串 / 模拟 / 构造) (Roun #658 Div.2)

    传送门 题意: 给出两个长度为n的二进制串a和b,你每次可选取一段前缀子串取反并翻转(即:10010 -> 01101 -> 10110).已知在3 * n次操作内一定能将a变成b.先让你 ...

  5. 【UVA/Codeforces】1584 Circular Sequence / 792B Counting-out Rhyme(就是一个圈儿...)

    https://vjudge.net/problem/UVA-1584 1584 Circular Sequence 输入一个字符串,可以以字符串中任意一个字母作为起始,输出字典序最小的那个字符串 两 ...

  6. Codeforces 1276C/1277F Beautiful Rectangle (构造)

    题目链接 http://codeforces.com/contest/1276/problem/C 题解 嗯,比赛结束前3min想到做法然后rush不出来了--比赛结束后又写了15min才过-- 以下 ...

  7. Codeforces 1246D/1225F Tree Factory (构造)

    题目链接 https://codeforces.com/contest/1246/problem/D 题解 首先考虑答案的下界是\(n-1-dep\) (\(dep\)为树的深度,即任何点到根的最大边 ...

  8. Codeforces 798D Mike and distribution (构造)

    题目链接 http://codeforces.com/contest/798/problem/D 题解 前几天的模拟赛,居然出这种智商题..被打爆了QAQ 这个的话,考虑只有一个序列怎么做,把所有的排 ...

  9. CodeForces - 1332B Composite Coloring(数论+构造)

    题目链接:点击查看 题目大意:给出 n 个合数,每个数不超过 1000 ,现在要求给每个数涂上颜色,使得相同颜色的任意两个数的 gcd 都大于 1 ,现在问在总颜色数不超过 11 种的情况下,构造出一 ...

最新文章

  1. Apache ZooKeeper - JMX监控 ZooKeeper 的运行状态
  2. 软考-信息系统项目管理师-项目人力资源管理
  3. [react] 和Component两者的区别是什么
  4. java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态
  5. ps画布扩展颜色灰色不可用的原因和解决方法
  6. leetcode934.ShortestBridge
  7. Spring Boot 2.2 正式发布,性能大幅提升、Java 13 支持|CSDN博文精选
  8. HDU 1285:确定比赛名次(拓扑排序)
  9. 虚拟机中qemu模拟开发板启动过程,使用nfs挂载根文件系统
  10. 【C#】1.2 控制台应用程序学习要点
  11. 螺旋桨的制作图文教程
  12. 哪里可以做TEM/HRTEM/EDS/线扫/Mapping测试、EBSD测试
  13. Python实现5毛钱特效
  14. 局域网vnc远程控制软件,那些超级好用的局域网vnc远程控制软件
  15. 未来真的可以影响过去吗?人人都能看懂的波粒二象性和延迟选择量子擦除实验解释,通俗易懂量子物理
  16. java openoffic linux_Linux操作系统下安装Openoffice3.2
  17. 微博商城开启社会化电商之路
  18. php前端语言三套语文卷子,2018高考语文语言文字运用模拟题及答案(3.4)
  19. Paddle Quantum 量桨入门手册
  20. 整理大厂高频核心前端面试题,五万多字,面试必考

热门文章

  1. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
  2. 父子表关联在窗体中的绑定显示和浏览
  3. Elgg网站迁移指南
  4. usaco Number Triangles
  5. python的flask实现接口_使用python的Flask实现一个接口mock数据(傻瓜教程)
  6. java课程心得_javaweb课程心得体会(三)
  7. 156 13.67用matlab答案,数学实验(MATLAB版韩明版)5.1,5.3,5.5,5.6部分答案
  8. mysql 二进制日志变化_mysql-二进制日志
  9. html默认选定,html默认代码
  10. java calendar与date_Java中date和calendar的用法