博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 487C Prefix Product Sequence[数论+构造]
阅读量:6736 次
发布时间:2019-06-25

本文共 1984 字,大约阅读时间需要 6 分钟。

首先第一个必须放1(不然放在中间会有两个重复的数) 最后一个必须放n \(n! \equiv 0 \pmod n\)

1334706-20190303002119740-676202151.png

\[ \text{中间的数放}\frac{2}{1},\frac{3}{2},... \]

这样第 \(i\) 个数就是 \[ \prod_{j=1}^i{a_j}=1\times \frac{2}{1}\times \frac{3}{2}\times ...=i \]

现在前缀积各不相同了,如何证明每个元素不同呢?发现中间的数减去1都是1/x的形式,因为逆元互不相同(百度百科:群G中任意一个元素a,都在G中有唯一的逆元a‘,具有性质aa'=a'a=e,其中e为群的单位元。),所以每个元素也是不同的

namespace QvvQ {int mod;struct Mod {  int a;  Mod(int _a) : a(_a) {}  Mod(ll _a) : a(_a % mod) {}  Mod() {}  int inv() {return Pow(a, mod - 2, mod);}  Mod &operator += (const int b) {a += b; if (a < 0) a += mod; else if (a >= mod) a -= mod; return *this;}  Mod &operator -= (const int b) {a -= b; if (a < 0) a += mod; else if (a >= mod) a -= mod; return *this;}  Mod &operator *= (const int b) {a = a * 1ll * b % mod; if (a < 0) a += mod; return *this;}  Mod &operator /= (const int b) {a = a * 1ll * Pow(b, mod - 2, mod) % mod; if (a < 0) a += mod; return *this;}  Mod &operator += (const Mod rhs) {return *this += rhs.a;}  Mod &operator -= (const Mod rhs) {return *this -= rhs.a;}  Mod &operator *= (const Mod rhs) {return *this *= rhs.a;}  Mod &operator /= (const Mod rhs) {return *this /= rhs.a;}  friend Mod operator + (Mod c, const Mod rhs) {return c += rhs.a;}  friend Mod operator - (Mod c, const Mod rhs) {return c -= rhs.a;}  friend Mod operator * (Mod c, const Mod rhs) {return c *= rhs.a;}  friend Mod operator / (Mod c, const Mod rhs) {return c /= rhs.a;}  Mod &operator = (const int x) {a = x; return *this;}  Mod &operator = (const ll x) {a = x % mod; return *this;}  Mod &operator = (const Mod rhs) {a = rhs.a; return *this;}} inv[N];void init() {}void solve() {  int n = in;  mod = n;  if (n == 1) {    out, "YES\n1";    return ;  }  if (n == 4) {    out, "YES\n1\n3\n2\n4";    return ;  }  for (int i = 2; i * i <= n; ++i) if (n % i == 0) return puts("NO"), void();  puts("YES");  inv[0] = inv[1] = 1;  lo(i, 2, n) inv[i] = (n - n / i) * inv[n % i];  lo1(i, n-1) out, (inv[i - 1] * i).a, '\n';  out, n;}}

转载于:https://www.cnblogs.com/storz/p/10463740.html

你可能感兴趣的文章
Jmeter性能测试 入门 (Z)
查看>>
CodeForcs 1169B Good Triple
查看>>
odoo明细表汇总数据
查看>>
无缝滚动 js 一
查看>>
windows环境搭建禅道项目管理工具
查看>>
Fibonacci数列
查看>>
10个带源码的充满活力的Web设计教程
查看>>
[14]CSS3 文本效果
查看>>
检索 COM 类工厂中 CLSID 为 {BDEADF26-C265-11D0-BCED-00A0C90AB50F}的组件时失败,原因是出现以下错误: 80040154。...
查看>>
陶哲轩实分析习题17.3.2
查看>>
CentOS rpmdb open failed
查看>>
UILabel
查看>>
indexOf()的用法
查看>>
前端 时间个性化 插件 jquery.timeago.js
查看>>
20145337 《Java程序设计》第九周学习总结
查看>>
js中frame的操作问题
查看>>
BZOJ 4913 [Sdoi2017] 遗忘的集合
查看>>
Java经典设计模式(1):五大创建型模式(附实例和详解)
查看>>
Vue源码探究-数据绑定的实现
查看>>
【九】MongoDB管理之安全性
查看>>