题目链接


\(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. 安全报告显示2015年DDoS攻击强度创下新纪录
  2. CCNP视频教程下载全集
  3. SpringBoot - 优雅的实现【应用启动参数校验】
  4. mysql开创_MySQL创始人打造MariaDB 全面兼容MySQL 5.1
  5. C# 无法识别的转义序列
  6. windows 和 linux服务器环境下j2sdk 的安装和环境设置
  7. svn: E155036: Please see the ‘svn upgrade‘
  8. jQuery实现清空table表格除首行外的所有数据
  9. java eclipse中修改Web项目的URL访问路径
  10. IIS出现问题报CS0016
  11. «构建并破坏它»:某些算法如何生成验证码,而另一些则如何破解
  12. 火狐上如何使用谷歌翻译插件_将Google翻译功能添加到Firefox
  13. iphone 模拟器截图
  14. PS时间轴制作动态图
  15. MySQL与MariaDB性能比拼
  16. 更改PPT的模板名称
  17. C·cJSON库函数--cJSON_GetObjectItem
  18. HTTP返回代码 201 304 404 500等代表的含义
  19. Linux菜鸟学习笔记
  20. 常见的深度学习图像处理数据集下载

热门文章

  1. 一些linux下的性能监测工具
  2. javascript对象之window对象详解
  3. 对某课程的建议和意见_2021年河南专升本专科专业对照和考试课程征求意见
  4. android+图标闪烁动画,如何在android中闪烁通知图标? [DONE]
  5. php语句中两个if语句,如何在PHP中组合两个IF语句
  6. python画指数函数图像_python实现画出e指数函数的图像
  7. 【Linux】多线程中使用fork()
  8. PCL:点云特征描述子3D_object_recognition_(descriptors)
  9. Ubuntu virtualbox
  10. 【深度学习理论】(2) 卷积神经网络