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 将视频转换成音频

    安装库 sudo pip install moviepy 代码 index.py from moviepy.e […]...

  2. widows 10 下解决在npm install python 环境报错的问题

    widows 10 下解决在npm install python 环境报错的问题 1.使用管理员打开cmd  […]...

  3. python3.6 使用pyinstaller 打包web程序的方法

    官方文档连接 (https://pyinstaller.readthedocs.io/en/stable/ ) […]...

  4. Flask入门很轻松 (二)

    请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接; […]...

  5. Python Fabric ssh 配置解读

    Python Fabric ssh 配置解读 Python Fabric ssh 配置解读 Fabric 2. […]...

  6. Python self用法详解

    在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个 […]...

  7. python学习-基础知识-1

    1、计算机历史 计算机使用高低电压的两种状态来描述信息。计算机可以理解的只有二进制数据即010100011&# […]...

  8. PYTHON 学习笔记4 模块的使用、基本IO 写入读取、JSON序列化

    前言 若在之前写代码的方式中,从Python 解释器进入。退出后再次进入,其定义的变量、函数等都会丢失。为了解 […]...

随机推荐

  1. 带你使用h5开发移动端小游戏

    h5的js游戏框架JY的2.0版介绍,本文作重介绍了通过jy1.x做的h5游戏和通过jy2.x做的h5有啥区别 […]...

  2. pyEcharts安装及使用指南

    pyEcharts安装及使用指南 ECharts是一个纯Javascript的图表库,可以流畅的运行在PC和移 […]...

  3. iOS 开发之 GCD 不同场景使用

      html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h […]...

  4. MVC简介与三层架构

    感谢博客园团队日夜辛苦的付出 感谢阅读我文章的每位读者  1.MVC简介   MVC最早于1978年提出,是软 […]...

  5. 原型设计工具比较及实现

    常见原型设计工具 一、墨刀 简介 是一款在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及 […]...

  6. ArrayList

    使用ArrayList存储学生并遍历 学生类为 package com.itheima_01; public […]...

  7. ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

     创建静态库可能出于以下几个理由: 1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件。2 […]...

  8. HTTP状态码详解—转载

    状态码 含义 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未 […]...

展开目录

目录导航