题目

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;}}
}

转载于:https://www.cnblogs.com/chen1352/p/9079700.html

Codeforces Round #395 Div.1 C pacifist【JZOJ5449】Pacifist相关推荐

  1. Codeforces Round #180 (Div. 2) B. Sail 【模拟】

    B. Sail time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  2. Codeforces Round #202 (Div. 1) A. Mafia 【二分】

    A. Mafia time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  3. Codeforces Round #630 (Div. 2) A~D【思维,数论,字符串,位运算】

    A. Exercising Walk 水题一道:在指定空间内你一定要向各个方向走a,b,c,d步问你能否在规定空间内走完这题的坑点样例都给出来了qwq #include <iostream> ...

  4. Codeforces Round #395 (Div. 2) - A

    题目链接:http://codeforces.com/contest/764/problem/A 题意:有两个人,第一个人每n分钟到达一次目的地,第二个人每m分钟到达一次目的地,现在给定一个时间z问在 ...

  5. Codeforces Round #395 (Div. 2)(未完)

    2.2.2017 9:35~11:35 A - Taymyr is calling you 直接模拟 #include <iostream> #include <cstdio> ...

  6. 【Codeforces Round #532 (Div. 2) F. Ivan and Burgers】离线+线性基

    F. Ivan and Burgers 题意 n个数,q次询问,每次询问一个区间内选出任意个数的异或最大值. 1<=n<=5∗1051<=n<=5*10^51<=n< ...

  7. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

  8. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  9. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

最新文章

  1. 华为云NP考试题库_华为认证网络工程师怎么考
  2. 有关RDS上只读实例延时分析-同适用于自建MySQL主从延时分析判断
  3. python编程基础知识体系_Python 编程核心知识体系-基础|数据类型|控制流(一)...
  4. ebs查看服务状态_浅析AWS KMS密钥管理服务
  5. winpe制作u盘启动盘_怎么制作u盘启动盘 u盘启动盘制作方法【介绍】
  6. Hibernate实体映射配置1(java@注解方式)
  7. 2014/09/30 Learning Note
  8. HTTP 错误 500.22 - Internal Server Error
  9. C++ 布隆过滤器原理及实现
  10. 一张图看懂字节跳动8年创业史,太励志了吧
  11. CString Char* 转换 - C++学习
  12. 利用Lua脚本语言制作魔兽WOW插件
  13. 高斯模型matlab程序代码,我找到的高斯混合模型的代码
  14. 重学计算机组成原理(五)- 旋转跳跃的指令实现
  15. iPhone7 更新iOS13.3软件闪退
  16. VB6 MsgBox 函数
  17. 通过socks 代理 攻击局域网的电脑
  18. 零基础深度学习对金县房价预测
  19. Presto 与 Hive 语法学习
  20. 佳博Gprinter GP-80350 打印机驱动

热门文章

  1. 【STM32】标准库与HAL库对照学习教程外设篇--超声波测距传感器
  2. Web设计 电子相册
  3. CAD二次开发--两条线交叉求交点坐标的方法建议(IntersectWith的使用注意)
  4. 贵在坚持,难在坚持,成在坚持。
  5. C#多线程加载控件界面卡死的解决
  6. RMAN 的优缺点及RMAN 备份及恢复步骤
  7. IDEA怎么在单独的窗口显示差异和并排两排显示代码?
  8. HDLC和PPP协议
  9. 播放器技术分享(1):架构设计
  10. SAP QM 启用了Inspection Point的检验批在UD界面里有什么不同?