Codeforces Round #395 Div.1 C pacifist【JZOJ5449】Pacifist
来源:互联网 发布:用java求最大公约数 编辑:程序博客网 时间:2024/06/06 12:48
题目
papyrus 喜欢谜题… 来解一道如何?
在你面前有一个被加密了的数组,其原数组是一个等差序列,你面前的则是将原数组中的所有数字都对m 取模再打乱后而得到的新数组
papyrus 给你出的谜题就是还原出原等差序列
保证数据有解,而且因为papyrus 喜欢质数,所以他给你出的谜题中的m 一定是质数
分析
将a排序,当a[1]不是末项时,a[i]-a[1]一定有一个为公差
枚举公差d,
我们就可以通过等差数列和来求出首项a1,
我们通过a1和d来求出对应的等差数列平方和,na1²+n(n-1)d+n(n-1)(2n-1)d²
判断是否符合。
#include <iostream>#include <cmath>#include <cstring>#include <algorithm>#include <cstdio>#include <cstdlib>#include <map>#include <queue>using namespace std;const int maxlongint=2147483647;const int N=100005;long long mo,a[N],sum,ny,n,su,ny1;long long mi(long long x,int y){ long long sum=1; for(;y;) { if(y&1) sum=sum*x%mo; x=x*x%mo; y>>=1; } return sum;}int main(){ freopen("pacifist.in","r",stdin); //freopen("pacifist.out","w",stdout); scanf("%lld%lld",&mo,&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),su=(su+a[i])%mo,sum=(sum+a[i]*a[i]%mo)%mo; sort(a+1,a+1+n); if(n==mo) { printf("0 1"); return 0; } ny=mi(6,mo-2); ny1=mi(n,mo-2); for(int i=2;i<=n;i++) { long long d=(a[i]-a[1])%mo; if(!d) continue; long long a1=(2*su*ny1%mo-d*(n-1)%mo+mo)%mo*mi(2,mo-2)%mo; if((n*a1%mo*a1%mo+n*(n-1)%mo*(2*n-1)%mo*d%mo*d%mo*ny%mo+n*(n-1)%mo*d%mo*a1%mo)%mo==sum) { printf("%lld %lld",a1,d); return 0; } }}
阅读全文
1 0
- Codeforces Round #395 Div.1 C pacifist【JZOJ5449】Pacifist
- [JZOJ5449] Pacifist
- [2017纪中11-4][Codeforces Round #395 Div.1]C pacifist
- Jzoj5449【NOIP2017提高A组冲刺11.4】Pacifist
- 【NOIP2017提高A组冲刺11.4】Pacifist
- 【dp】Codeforces Round #110 (Div. 1) C
- Codeforces Round #142 (Div. 1) C. Triangles
- Codeforces Round #230 (Div. 1)B,C
- Codeforces Round #259 (Div. 1)C题
- Codeforces Round #228 (Div. 1) C 贪心
- Codeforces Round #284 (Div. 1) C
- Codeforces Round #286 (Div. 1) C、D
- Codeforces Round #302 (Div. 1) C
- Codeforces Round #333 (Div. 1) C
- Codeforces Round #336 (Div. 1) C. Marbles
- Codeforces Round #356 (Div. 1) C
- Codeforces Round #362 (Div. 1) C PLEASE
- Codeforces Round #363 (Div. 1) C LRU
- switch语句
- MySQL 分表
- 累加
- 大小写字母之间的转换
- bzoj3629[JLOI2014]聪明的燕姿 搜索+筛法
- Codeforces Round #395 Div.1 C pacifist【JZOJ5449】Pacifist
- 机器学习_on similarity preserving feature selection
- log4j与commons-logging,slf4j的关系
- 洛谷P1801 黑匣子(堆 )
- Linux下JDK的安装
- Reachability网络监听
- Ubuntu16.04中好用的软件(持续更新)
- 逗比三角形 sbtg
- R语言实战(第2版)笔记-第2章 创建数据集