致命漏洞C++(未完待续)

致命漏洞

 

【问题描述】                                              

魔法学家Rutherford.D.Imbalance最近发表了一个生成伪随机序列的方法:

B_0=1

B_(n+1)=2B_n
               ,2B_n<2^T

B_(n+1)=(2B_n xor X) mod 2^T  ,2B_n>=2^T

其中X和T给定。

他使用这个方法来构造他研制的式神的神经指令加密系统,可是作为Synophia大陆稀有的以研究数学为工作的你的好友Lwins_Alpha,敏锐地发现了这个方法存在着致命的漏洞。其中最严重的问题莫过于可以通过一些数学手段快速计算得这个序列的任意一项。Lwins_Alpha本想写信告知Imbalance这个问题,但是她突然发现Imbalance不可能看懂她的复杂的数学符号,于是她向你——以扫地为生来隐藏自己真实身份的大陆有史以来最伟大的式神制造师——Lwins_***求助了。(***为待定内容,视你最后提交上来的文件包而定)

为了证明Imbalance生成伪随机序列的方法确实有致命漏洞,最简单的方法莫过于编写一个能快速计算B_n的式神,然后将它邮寄给Imbalance。而在式神的其他部分都由你的徒弟Lwins_Lights编写的情况下,你只需要使用Pascal/C/C++语言编写最核心的部分——输入n,T,X,输出B_n:因为Lwins_Alpha为了考验你的IQ,居然没有告诉你快速计算B_n的具体方法!

不能让她小瞧你,抱着这样的信念,你开始了自己的工作。

【输入格式】

输入文件bug.in共三行,每行一个正整数,分别为n,T,X。

【输出格式】

输出文件bug.out仅包含一个正整数B_n。

 

【输入样例】

7

7

7

【输出样例】

7

【数据约定】

对于20%的数据:n<=10^ 5, T<=20。

对于55%的数据:n<=10^5。

对于100%的数据:n<=10^30, T<=100, 0<X<2^T。

看到题目的瞬间我晕了,xor是什么,度娘说是异或,经过程序验证,AxorB!=A+B,希望全部破灭

暴力先打吧,程序附上:


#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int b[1000000];
int n,T,X,k;
int main()
{
int i,j,t,a,c,d;
for (j=1;j<=100;j++){
cin>>n>>T>>X;
b[0]=1; k=1;
t=1;
for (i=1;i<=T;i++)t*=2;
cout<<"t:"<<t<<endl;
cout<<"B[0]:1"<<endl;
for (i=1;i<=n;i++)
{
if (k*2<t) {cout<<"2B["<<i<<"]<t";
b[i]=2*k;}
else{a=2*k;
c=a^X;
b[i]=c%t;
cout<<"2B["<<i<<"]>=t";
}
k=b[i];
cout<<" B["<<i<<"]:"<<b[i]<<endl;
}
}
return 0;
}

时间: 2024-10-06 16:12:59

致命漏洞C++(未完待续)的相关文章

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

Unity3D快捷键 未完待续

Unity3D 点选Object+F Object在当前视角居中 CTRL+1/2 Scene/Game视图的切换 MonoDevelop CTRL+K  删除光标所在行的该行后面的代码 CTRL + ALT +C  注释/不注释该行 CTRL+ DOWN  像鼠标滚轮一样向下拖 CTRL + UP 像鼠标滚轮一样向上拖 CTRL + F  查找该脚本 CTRL + SHIFT + F 查找全部脚本 CTRL + H 替换代码 CTRL + SHIFT +W 关掉所有脚本 Unity3D快捷键

模板区域[未完待续](会定期的更新哦(有时间就更了))

写这个博客目的就是为了记录下学过的模板方便我这焫鷄复习吧//dalao们绕道 近期学的: (1)来自机房学长jjh大神教的求1~n的所有最小素因数和加上本焫鷄的批注 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>//求1~n的最小质因数 using namespace std; const int MAXN=1e6+

NOIP2016 那些我所追求的 [未完待续]

人生第一场正式OI [Day -1] 2016-11-17 期中考试无心插柳柳成荫,考了全市第2班里第1(还不是因为只复习了不到两天考试),马上请了一个周的假准备NOIP(数学生物还是回去上课的) 灰哥跟我一块,tlq考吃了没请假 正好下个周老班出去学习了不害怕 星期4所有人都请假了,漫无目的地复习了一天题,参考题解补了一场模拟赛 晚上灰哥因为住宿直接回家了,还让我给XXX送纸条 SD NOIP的群好多人直播,我们就直播了个国际象棋(竟然有人说八皇后,我只升变了两个兵称为皇后),然而竟然默认开启

[daily][optimize] 去吃面 (python类型转换函数引申的性能优化)(未完待续)

前天,20161012,到望京面试.第四个职位,终于进了二面.好么,结果人力安排完了面试时间竟然没有通知我,也没有收到短信邀请.如果没有短信邀请门口的保安大哥是不让我进去大厦的.然后,我在11号接到了面试官直接打来的电话,问我为啥还没到,我说没人通知我我不知道呀.结果我就直接被他邀请去以访客的身份参加面试了.不知道人力的姑娘是不是认识我,且和我有仇,终于可以报复了... 然后,我终于如约到了,面试官带着我去前台登记.前台的妹子更萌...认为我是面试官,面试官是才是来面试的.我气质真的那么合吗?

React v16-alpha 源码简读【未完待续】

一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm install $gulp default (建议使用node 6.0+) gulp将文件处理在根目录下的build文件夹中,打开build查看react的源码,结构清晰,引用路径明了 二.从生成 virtual dom 开始 react 生成一个组件有多种写法: es 5下:var Cp=React.