题目

发现这个题的本质就是在做\(\rm hash\)

我们显然能够列出\(n\)个方程,之后高消,这是\(O(n^3)\)的

但是观察一下第一个和第二个方程

\[a_{1}26^{n-1}+a_{2}26^{n-2}+...+a_{n}26^{0}=b_1
\]

\[a_{2}26^{n-1}+a_{3}26^{n-2}+...+a_{1}26^{0}=b_2
\]

考虑让他们强行对齐一下,于是上面的方程乘\(26\)

\[a_{1}26^{n}+a_{2}26^{n-1}+...+a_{n}26^{1}=26b_1
\]

相互减一下,中间那些对齐的项就消没了

\[a_126^0-a_126^{n}=b_2-26b_1
\]

即\(a_1=\frac{b_2-26b_1}{1-26^n}\),我们这样就能解出整个\(a\)了

之后发现在\(26^n\equiv 1(\rm mod\ p)\)的时候就崩了

我们发现如果\(b_1-a_1\times 26^n\equiv \frac{b_2-a_1}{26}(\rm mod\ p)\),即\(26b_i-(1-26^n)a_1=b_{i+1}\)

因为\(26^n\equiv 1(\rm mod\ p)\),所以这个时候\(26b_i\equiv b_{i+1}(\rm mod \ p)\),又因为数据保证有解,所以我们只需要构造一个\(a\),使得其满足\(a_{1}26^{n-1}+a_{2}26^{n-2}+...+a_{n}26^{0}=b_1\)即可,这样后面的自然也会满足

所以我们将\(b_1\)转成一个\(n\)位的\(26\)进制数即可

代码

#include<bits/stdc++.h>
#define re register
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
const int maxn=1e5+5;
int n,p,mod;
int pw[maxn],a[maxn],s[maxn];
inline int ksm(int a,int b) {
if(a<0) a+=mod;
int S=1;
for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) S=1ll*S*a%mod;
return S;
}
namespace sub {
inline void solve() {
int x=a[0];
for(re int i=n-1;i>=0;--i) s[i]=x%26,x/=26;
for(re int i=0;i<n;++i) putchar(s[i]+'a');
}
}
int main() {
n=read(),mod=read();pw[0]=1;
for(re int i=0;i<n;i++) a[i]=read();a[n]=a[0];
for(re int i=1;i<=n;++i) pw[i]=1ll*pw[i-1]*26%mod;
if(pw[n]==1) {sub::solve();return 0;}
int Inv=ksm(1-pw[n],mod-2);
for(re int i=1;i<=n;i++)
s[i-1]=1ll*(a[i]-1ll*26*a[i-1]%mod+mod)*Inv%mod;
for(re int i=0;i<n;i++) putchar(s[i]+'a');
return 0;
}

uoj74 【UR #6】破解密码的更多相关文章

  1. 【UOJ#74】【UR #6】破解密码

    [UOJ#74][UR #6]破解密码 题面 UOJ 题解 发现这个过程是一个字符串哈希的过程. 把第一位单独拿出来考虑,假设这个串是\(p+S\),旋转后变成了\(S+p\). 其哈希值分别是:\( ...

  2. 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?

    作者:Cascade链接:https://www.zhihu.com/question/21231074/answer/20701124来源:知乎著作权归作者所有,转载请联系作者获得授权. 想要理解G ...

  3. python 暴力破解密码脚本

    python 暴力破解密码脚本 以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的, 假设要暴力破解登陆网站www.a.com 用户 testUser的密码, 首先,该网站登陆的验证要支 ...

  4. 破解密码那些事儿(Hacking Secret Ciphers with Python)

    作者:Al Sweigart   我们在电视和电影里头经常能够看到黑客们兴奋的快速敲击键盘,接着毫无意义的数字就在屏幕上飞奔(比如黑客帝国).然后让大家产生了一种奇妙的错觉,做黑客是一件高大上的事情, ...

  5. Linux_破解密码-营救模式

    实验用机:CentOS 5.7 破解密码 设置开机启动界面 系统运行级别 营救模式 一.破解密码 root用户可以更改任何用户的密码,普通用户只能修改自己的密码. 步骤: 1.重新启动系统 2.开机倒 ...

  6. day43 mysql 基本管理,[破解密码以及用户权限设置]以及慢日志查询配置

    配置文件:详细步骤, 1,找到mysql的安装包,然后打开后会看到一个my.ini命名的程序,把它拖拽到notepad++里面来打开,(应该是其他文本形式也可以打开,可以试一下),直接拖拽即可打开该文 ...

  7. CentOS Linux release 7.3破解密码详解

    CentOS Linux release 7.3破解密码详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 公司最近接了一个项目,拿到客户现有的源代码,但是服务器用户密码并不知情, ...

  8. Excel工作表保护的密码破解与清除...假装自己破解密码系列?

    有一次我女朋友让我帮忙解一个excel表格的保护密码,然后~用了宏 网上下载来的Excel经常会有工作表保护,也就是无法修改,妄图做任何修改的时候你就会看见这句话: 您试图更改的单元格或图表位于受保护 ...

  9. Centos7.x破解密码

    Centos7.x破解密码 centos7 破解密码 重置Centos 7 Root密码的方式和Centos 6完全不同.让我来展示一下到底如何操作. 1 .在启动grub菜单,选择编辑选项启动 14 ...

  10. Ubuntu 破解密码及用户管理

    Ubuntu 破解密码及用户管理 ubuntu 16.04 破解密码 useradd 实现以下要求 1.ubuntu16.04破解密码 2.创建下面的用户.组和组成员关系 名字为xipudata 的组 ...

随机推荐

  1. 训练集(train set) 验证集(validation set) 测试集(test set)。

    训练集(train set) 验证集(validation set) 测试集(test set). http://blog.sina.com.cn/s/blog_4d2f6cf201000cjx.ht ...

  2. CSS:CSS 属性 选择器

    ylbtech-CSS:CSS 属性 选择器 1.返回顶部 1. CSS 属性 选择器 具有特定属性的HTML元素样式 具有特定属性的HTML元素样式不仅仅是class和id. 注意:IE7和IE8需 ...

  3. 使用linkedhashmap实现LRU(最近最少使用缓存算法)

    import java.util.LinkedHashMap; import java.util.Map; public class LRUCache<K, V> extends Link ...

  4. shell cat 合并文件,合并数据库sql文件

    > 覆盖写入 >> append模式写入 ###################################################################合并数 ...

  5. POJ3356-AGTC-dp+字符串处理

    Let x and y be two strings over some finite alphabet A. We would like to transform x into y allowing ...

  6. [Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍

    原文:https://blog.csdn.net/hxcaifly/article/details/84673292 https://blog.csdn.net/zero__007/article/d ...

  7. mysql优化3:BTree索引和Hash索引

    一.BTree索引 注:名叫btree索引,大的方面看,都用的平衡树,但具体的实现上,各引擎稍有不同,比如,严格地说,NDB引擎使用的是T-tree,Myisam和innodb中默认用B-tree索引 ...

  8. tensorflow 训练网络loss突然出现nan的情况

    1.问题描述:开始训练一切都是那么的平静,很正常! 突然loss变为nan,瞬间懵逼! 2.在网上看了一些解答,可能是梯度爆炸,可能是有关于0的计算.然后我觉得可能是关于0的吧,然后进行了验证. 3. ...

  9. jenkins构建参数

    $BUILD_NUMBER 构建序号 $WORKSPACE 工作目录 #!/bin/sh - chmod u+x mvnw./mvnw package -Pprod -Dmaven.test.skip ...

  10. 常用css3属性的ie兼容查看

    记录一下关于css3的各种常用属性对ie各版本浏览器的兼容程度: 最低可兼容ie7 最低可兼容ie8 最低可兼容ie9 最低可兼容ie10 position:fixed clip E:first-le ...