P4838 P哥破解密码
题目背景
P哥是一个经常丢密码条的男孩子。
在ION 8102赛场上,P哥又弄丢了密码条,笔试满分的他当然知道这可是要扣5分作为惩罚的,于是他开始破解ION Xunil系统的密码。
题目描述
定义一个串合法,当且仅当串只由A和B构成,且没有连续的3个A。P哥知道,密码就是长度为N的合法字符串数量对192608171926081719260817取模的结果。但是P哥不会算,所以他只能把NNN告诉你,让你来算
至于为什么要对这个数取模,好像是因为纪念某个人,但到底是谁,P哥也不记得了
然而他忘记字符串长度N应该是多少了,于是他准备试M组数据。
输入输出格式
输入格式:
第一行给出一个整数M表示询问次数
接下来M行每行给出一个正整数N,表示该组询问中字符串的长度
输出格式:
对于每一次询问输出一行一个整数表示答案
输入输出样例
3 1 3 6
2 7 44
说明
样例部分解释:
长度为1时只有"A"和“B“两种排列,都是合法的
长度为3时除了"AAA"是不合法的其他都是可以的,故有23−1种
数据范围
对于20%数据,全部N≤20,M≤2
对于70%数据,全部N≤107
对于100%数据,全部N≤109,M≤10
Solution:
本题矩阵快速幂。
还是先打表观察波小数据,
表:
#include<bits/stdc++.h> #define ll long long #define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++) using namespace std; ll cnt,a[100],ans,n;void dfs(int now){if(now>n) {ans++;return;}a[now]=1,dfs(now+1),a[now]=0;if(now<=2||(a[now-2]|a[now-1])) dfs(now+1); }int main(){while(n<=20) ++n,dfs(1),cout<<ans<<' ',ans=0;return 0; }
然后就会发现数列规律:$f[1]=2,f[2]=4,f[3]=7…f[i]=f[i-1]+f[i-2]+f[i-3]$
于是直接跑矩乘就好了。
代码:
/*Code by 520 -- 10.8*/ #include<bits/stdc++.h> #define il inline #define ll long long #define RE register #define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++) #define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--) #define clr(p) memset(&p,0,sizeof(p)) using namespace std; const int mod=19260817; struct matrix{int r,c; ll a[3][3]; }ans,tp;il matrix mul(matrix x,matrix y){matrix tp; clr(tp);tp.r=x.r,tp.c=y.c;For(i,0,x.r-1) For(j,0,y.c-1) For(k,0,x.c-1)tp.a[i][j]=(tp.a[i][j]+x.a[i][k]*y.a[k][j]%mod)%mod;return tp; }int main(){int T;scanf("%d",&T);while(T--){ll n;scanf("%lld",&n);clr(ans),clr(tp);ans.r=1,ans.c=3; tp.r=tp.c=3;ans.a[0][0]=1,ans.a[0][1]=2,ans.a[0][2]=4;tp.a[0][2]=tp.a[1][0]=tp.a[1][2]=tp.a[2][1]=tp.a[2][2]=1;while(n){if(n&1) ans=mul(ans,tp);n>>=1,tp=mul(tp,tp);}printf("%lld\n",ans.a[0][0]);}return 0; }
转载于:https://www.cnblogs.com/five20/p/9801255.html
P4838 P哥破解密码相关推荐
- 【洛谷T37388】P哥破解密码
原题图: 看到这个题,首先想到的当然是暴力打表找规律了 表: 1 2 2 4 3 7 4 13 5 24 6 44 7 81 8 149 9 274 10 504 11 927 12 1705 13 ...
- 在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂「拳无虚发」
视学算法报道 编辑:张倩.陈萍 加入体感控制,这位小哥破解了原版任天堂的拳击格斗游戏「拳无虚发」. 在经典红白机上玩拳击游戏是很多人的童年回忆,其中就包括任天堂 1987 年发布的拳击格斗游戏--「P ...
- Linux 修改SSH 默认端口 22,防止被破解密码
2019独角兽企业重金招聘Python工程师标准>>> Linux/Unix 系统,很多人使用SSH + 密码来登陆服务器,默认 22端口,这样会有被暴力破解密码的危险(除非密码足够 ...
- 在接触到服务器时破解密码、及改ssh端口
RHEL7系统破解密码: 在RHEL7系统系统过程当中按"E"键进入 找到第一个以linux16开头的字段,按End键跳转至末尾, (空格),输入rd.break console= ...
- xen挂载虚拟机分区删除日志 破解密码无所不能
xen挂载虚拟机分区删除日志 破解密码无所不能 用 virt-manager, virsh 或其他工具可以选择把 KVM 或 Xen HVM 的虚拟机安装在一个镜像文件上,虽然因为性能的关系这种方式不 ...
- IBM:破解密码并不是量子计算机主要用途,不必为此担心
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 摩尔定律已逼近极限,算力还能如何增长? 科学家们正在寻找各种替代方法,例如用超导量子处理器,取代现在的传统计算机. IBM.谷歌.微软等公 ...
- xen虚拟化实战系列(六)之xen虚拟机破解密码
xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装 xen虚拟化实战系列(二)之xen虚拟机安装 xen虚拟化实战系列(三)之xen虚拟机复制 xen虚拟化实战系列(四)之 ...
- CentOS 6.8 GRUB加密-修复和破解密码实战指南
CentOS 6.8 GRUB加密和破解密码实战指南 案例1:服务器在公共场合,为了防止随便有人进入单用户破解root密码,先对GRUB引导进行加密,为了更加安全对启动内核时也加密 1.编辑g ...
- 破解密码高手王小云教授简介
王小云教授,1966年生于山东诸城,1983年至1993年就读于山东大学数学系,先后获得学士.硕士和博士学位,导师潘承洞.1993年毕业后留校任教.2005年获国家自然科学基金杰出青年基金资助,同年入 ...
最新文章
- 摩尔线程推出首款数据中心级全栈功能GPU:MTT S2000
- iOS进程间通信之CFMessagePort
- Silverlight教程第四部分:使用 Style 元素更好地封装观感 (木野狐译)
- 【人物】雷军去了联想,干货分享全场哑口无言,除了掌声...
- 与时代并肩的数字创新者
- android 使用c 代码实现,JNI开发实现helloworld,调用自己的C代码实现(1)
- 修改NavigationBar的分根线颜色
- 工厂支持多数据库开发的三层结构模式随笔(一)
- ResNeX论文概述
- 基于springboot的客栈(酒店)系统
- pycharm控制台打印时显示内容,不用省略号代替
- 工商银行在线支付接口
- python如何用opencv把一个视频按每10秒一小段切割
- ie8安装java提示被阻止_IE8浏览器安装失败的解决方法
- 计算机电源测试电压,使用万用表测试电脑电源好坏的方法
- c语言程序设计振动合成,C语言课程设计-振动波的合成原理
- php 反射执行类方法,PHP的反射类ReflectionClass、ReflectionMethod使用方法
- 数据库建表时, 没有成功创建表 No migrations to apply报错原因和解决方法
- 如何解决Package ‘zipp’ requires a different Python: 3.5.2 not in '=3.6
- 在找工作的过程中,面试一定要经历的逻辑推理题...
热门文章
- mysql访问被拒绝1045_mysqlimport:错误:1045,访问被拒绝
- java quartz Scheduler 操作Trigger
- js 高级 原型对象
- Node.js webpack babel
- Flink 状态管理
- APScheduler Scheduler
- 编程语言对比 字符串
- javascript RegExp正则表达式
- 为ESXi 4.x / 5.x / 6.x / 7.x创建持久暂存位置(1033696)
- mysql数据库复制功能配置,最详细的mysql数据库主从复制功能配置教程(docker版本)...