Codeforces 487C. Prefix Product Sequence 逆元+构造
来源:互联网 发布:技术推算法 编辑:程序博客网 时间:2024/06/05 14:50
题意:
对于数字n, 问是否存在1~n的一个排列 使这个排列的每一个前缀的乘积模上n 可以是0~n-1的一个排列
解析:
通过观察1肯定要在首位,n一定要在最后
除4意外的合数都没有解
其他质数构造 a[i]=i*inv[i-1] , 这样用逆元把前面每个数的影响都消除掉
/* ***********************************************Author :CKbossCreated Time :2015年03月12日 星期四 19时58分14秒File Name :CF487C.cpp************************************************ */#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <cmath>#include <cstdlib>#include <vector>#include <queue>#include <set>#include <map>using namespace std;typedef long long int LL;const int maxn=100100;int n;LL a[maxn],inv[maxn];bool isprime(int x){if(x==2||x==1) return true;if(x%2==0) return false;for(int i=3;i*i<=x;i+=2) if(x%i==0) return false;return true;}void solve(){inv[1]=1LL;for(int i=2;i<=n;i++) inv[i]=inv[n%i]*(n-n/i)%n;a[1]=1LL; a[n]=n;for(int i=2;i<n;i++) a[i]=(i*inv[i-1])%n;for(int i=1;i<=n;i++) printf("%I64d\n",a[i]);}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout);scanf("%d",&n);if(n==4){puts("YES"); puts("1"); puts("3"); puts("2"); puts("4"); return 0;}if(isprime(n)==false) puts("NO");else{puts("YES");solve();} return 0;}
0 0
- Codeforces 487C. Prefix Product Sequence 逆元+构造
- codeforces 487 C Prefix Product Sequence 构造+逆元
- cf 487C Prefix Product Sequence 构造+逆元
- Codeforces 487C Prefix Product Sequence(逆元)
- codeforces 487C C. Prefix Product Sequence(数论+构造)
- codeforces 487C Prefix Product Sequence (模逆元+构造)
- CodeForces 487 C.Prefix Product Sequence(数论+构造)
- CodeForces 487C Prefix Product Sequence
- codeforces 487C Prefix Product Sequence
- Codeforces Round #278 (Div. 1) C. Prefix Product Sequence 模逆元,构造 2017/1/25
- codeforces 488 E. Prefix Product Sequence
- Codeforces Round #278 (Div. 2) E. Prefix Product Sequence
- Codeforces 284C Cows and sequence 构造 or 线段树
- Codeforces 894C:Marco and GCD Sequence(构造)
- Codeforces 487C 数论+构造
- CodeForces 405C Unusual Product
- CodeForces 405C Unusual Product
- Codeforces 405C Unusual Product
- 把数组排成最小数
- hdu1068 二分图的最大独立集
- grub rescue
- Scala-3 - 5 - Lecture 2.5 - Functions and Data (11_50)
- 进程与线程间的通信方式
- Codeforces 487C. Prefix Product Sequence 逆元+构造
- HDU 2147-kiki's game(NP图解决博弈论)
- c++之运算符重载
- proe二次开发的第一个程序
- RESTful 接口规范
- sicily 1419(动态规划)
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- VS2013 Error LNK2011简易解决方案
- golang导包