七夕节快乐(中学生难度)
七夕节的你,是不是还是单身的对着OD呢鼓起勇气对你爱的人说出……
真爱当然是无壳的啦
来告诉我应该说什么呢,全数字哦
答案不唯一
欢迎爆破,也欢迎算法,也欢迎直接猜
直接猜搞不好最简单?
不嫌弃的话写一个分析过程?反正单身狗今晚也……
首先我们先认识一下一元二次方程式,这个是两根式,是本KM设计的思路
本KM的解为事先预定好的x1=5201314与今日日期x2=20180817
由两根式转换成一般式就是(X*X) + (-25382131 * X) =-104966765993538
那么这个式子实际上就是一个简单的一元二次方程。
但是实际上在IDA中可以看见
x(x-25382131)=-2060246594??这个解不是整数啊?%d玩那样?
并不是那串数字,是因为什么呢。实际上这里利用了一场事故。
聪明的大佬们应该知道发生了什么了……在数值变为int32的时候发生了“编译事故”
而这个人为造成的事故就被利用了。知道原来的C变成了不可能的事情。
但是这个事故同时这就造成了KM有很多解了,只要把“事故”后数作为C项就能解出x1,x2了,而且故意构造出事故数也可以实现无限解
那么怎么避免这个问题呢
使用scanf_s("%d", &X);将输入数值折腾一下令输入数值是整数即可。
那么主要核心算法部分讲述完毕了,聪明的大佬们已经知道了。
二元一次方程仅仅知道A与B是无法得知解的
无解的CM怕不是会被规定直接打死。
所以必须设计一个解法
设计出这个算法的”脆弱“点
还好今天是七夕,通过充分的“暗示“告知了玩家们二元解中的x1,即”5201314“
有了A,有了B,有了X1,那么通过韦达定理就可以求出另外一个解x2了
这里的x1是5201314,a是1,b是-25382131代入解得
以上就是这个KM的设计过程
实际上如果使用调试器……另外一个解也很容易得到
本次七夕节CM到此结束,感谢大佬们的捧场
祝大家明年七夕节不用单身狗过
单身不是错,不能老抱着代码不是 闲月疏云 发表于 2018-8-17 21:26
有请大侠来一波算法分析2333 msseed 发表于 2018-8-17 21:45
我娃都有了 哈哈哈
人生赢家传授一下人生经验 今天是七.....七你mb,今天是星期五 楼主为何没写循环,,
调试一下又得重新载入 2336973872 发表于 2018-8-17 21:50
楼主为何没写循环,,
调试一下又得重新载入
嗯?这个也是难度成分呢……无循环是正常操作啦
见过更难的还有……重启验证TAT lanzhe00 发表于 2018-8-17 21:40
我觉得7夕的意义要比2.14大。毕竟是传统节日,有更多祝福和寓意。祝大家幸福,跟个帖。
感觉现在盛行洋节,很多洋节的盛行跟商业行为密不可分呢 这两天还在学C语言