CTF编程题-三羊献瑞(实验吧)解题随记

xiongyulong 2019-03-29 原文

CTF编程题-三羊献瑞(实验吧)解题随记

题目如下。解题步骤参考的是https://cloud.tencent.com/developer/news/373865中作者的思路。

1.首先,两个四位数相加等于一个五位数,那么这个五位数的第一位必定是1,也就是“三”=1,。

2.继续分析“祥”+“三”,若是“祥”(8),“三”为1,那么低位必定有进位(才能结果为五位数);若是“祥”(9),假如低位没有进位,则也满足条件,而低位有进位那么“羊”为1,这就不符合题目要求(“三”=1,不同的汉字代表不同的数字)。所以总结下来,“祥”可能为9或8,满足所有条件的情况下,“羊”必定为0。

3.接下来可以看到“瑞”+“羊”并没有等于“瑞”,而是等于另外一个数字“生”。因为“羊”=0,“瑞”在2~9范围内,两者相加只可能等于“瑞”,而此处不是,则低位必然有进位。接下来可以知道“瑞”+“羊”+1不可能等于10,即“生”=0(与“羊”=0冲突)。那么“瑞”+“羊”并没有加进位,结合上一步的分析【若是“祥”(9),假如低位没有进位,则也满足条件】得知“祥”=9。

4.“生”-“瑞”=1,“生”最大为7,因为9被“祥”占用。那么“生”最小为3。

综上,瑞(2~7),生(3~8),“辉”、“献”、“气”的范围均为2~8。

接下来就是编程了,代码同样也是参考作者的。

 1 #encoding:utf-8
 2 #     祥9 瑞d[2] 生d[1] 辉d[0]
 3 #  +  三1 羊0    献d[4] 瑞d[2]
 4 #------------------------------
 5 # 三1 羊0 生d[1] 瑞d[2] 气d[3]
 6 import random
 7 #随机0-9的数组
 8 def shuzu():
 9     b1 = []
10     while True:
11         j=random.randint(2,8) 
12         if j not in b1:
13             b1.append(j)
14         if(b1.__len__()==5):
15             break
16     return b1
17 #
18 def shuzu1():
19     while True:
20         b2=shuzu()
21 #"生"-"瑞"=1,瑞(2-7),生(3-8)
22         if(b2[1]-b2[2]==1 and b2[1]!=2 and b2[2]!=8):
23             break
24     print(b2)
25     return b2
26 while True:
27 #d生成随机的数组
28         d=shuzu1()
29 # 祥c 瑞d[2] 生d[1] 辉d[0]
30         xrsh=9000+d[2]*100+d[1]*10+d[0]
31 #三a 羊b 献d[4] 瑞d[2]
32         syxr=1000+d[4]*10+d[2]
33 #三a 羊b生d[1] 瑞d[2] 气d[3]
34         sxsrq=10000+d[1]*100+d[2]*10+d[3]
35 #如果等式成立,就终止循环,输出数字
36         if(sxsrq==xrsh+syxr):
37             print("________________")
38             print("  祥瑞生辉:",xrsh)
39             print("+ 三羊献瑞:",syxr)
40             print("三羊生瑞气:",sxsrq)
41             break

代码运行时间也是随机的。

 

发表于 2019-03-29 09:06 xiongyulong 阅读() 评论() 编辑 收藏

 

版权声明:本文为xiongyulong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiongyulong/p/10619120.html

CTF编程题-三羊献瑞(实验吧)解题随记的更多相关文章

  1. Python 浅谈编程规范和软件开发目录规范的重要性

           最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每 […]...

  2. Python基础之While循环

    Python基础之While循环 一、摘要 本片博文将介绍input()函数和while循环的使用 二、inp […]...

  3. python3 依赖倒置原则示例

    python3 依赖倒置原则示例 2021-07-09 09:12  蝉时雨  阅读(0)  评论(0)  编 […]...

  4. Python 拓展之详解深拷贝和浅拷贝

    正式开始 首先我在这介绍两个新的小知识,要在下面用到。一个是函数 id() ,另一个是运算符 is。id() […]...

  5. 令人心烦意乱的字符编码与转码

    ASC-II码:英文1个字节(8 byte),不支持中文; 高大上的中国,扩展出自己的gbk、gb2312、g […]...

  6. python

    什么是编程语言编程语言 -- 》 编程 (写代码(写文字)) + 语言(中文,英文,交流的工具) --》 人和计算机交流的一种东西中文 --》 01010010 --》 计算机Python 能做什么(只要是和计算机有关的,你想干嘛想...

  7. (数据科学学习手札89)geopandas&geoplot近期重要更新

    本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/Dat […]...

  8. python下划线作用初识

    单下划线(例:_textchar) 以单下划线做前缀的名称指定了这个名称是“私有的”。在 有些 导入impor […]...

随机推荐

  1. 12306订票助手秘笈:2013春节我要回家

    又是一年春运时,一票难求让每个漂泊在外的异乡人更添几多思乡情。不要紧,12306订票有技巧,本文帮你搜集了12 […]...

  2. 搭建Git服务器

    目录 备注: 知识点 搭建Git服务器 公钥的管理 git服务器仓库的权限管理 备注: 本文参考于廖雪峰老师的 […]...

  3. C++文件读写操作

    C++文件读写操作 读写操作流程:   1.为要进行操作的文件定义一个流对象。   2.打开(建立)文件。   […]...

  4. JavaScript对象的valueOf()方法

    js对象中的`valueOf()`方法和`toString()`方法非常类似,但是,当需要返回对象的原始值而非 […]...

  5. Windows ML,系统内置的机器学习平台初探

    人工智能现在很火,虽然最近风头隐隐有被区块链盖过,但仍是未来技术转型的首选方向之一。作为AI核心的机器学习,目 […]...

  6. mysql的十二条基本语句

    在 mysql里,所有语句都以分号作为结束标志!   1.连接服务器 Mysql -u username -p […]...

  7. Java多线程导致CPU占用100%解决及线程池正确关闭方式

    简介 情景:1000万表数据导入内存数据库,按分页大小10000查询,多线程,15条线程跑。 使用了Execu […]...

  8. 点击式验证码

    看到网上的点击式验证码,觉得很方便. 环境 W8.1 VS2013 .NET4.5 WPF 验证码类 Crea […]...

展开目录

目录导航