文章目录

  • ida
  • 分析
  • 总结

ida

for ( i = 0; i <= 75; ++i ){Character = fuck(i * i) ^ flag[i];putchar(Character);}
__int64 __fastcall fuck(int a1)
{int v2; // ebxif ( a1 <= 1 )return (unsigned int)a1;v2 = fuck(a1 - 1);return v2 + 2 * (unsigned int)fuck(a1 - 2);
}

分析

递归代码,如果直接让它运行输出,总共有75位flag,函数层数太深,数值太大,直接卡死,所以需要把递归转为循环

#include <iostream>
using namespace std;
int main()
{unsigned char  flag[76] ={109,110,96,200,21793,11184845,1431655726,-1431655777,1431655731,-1431655780,1431655782,-1431655719,1431655690,-1431655734,1431655780,-1431655782,1431655690,-1431655780,1431655741,-1431655782,1431655718,-1431655692,1431655778,-1431655782,1431655736,-1431655784,1431655723,-1431655697,1431655781,-1431655692,1431655724,-1431655781,1431655712,-1431655692,1431655719,-1431655784,1431655732,-1431655782,1431655780,-1431655727,1431655782,-1431655692,1431655778,-1431655741,1431655782,-1431655692,1431655736,-1431655784,1431655732,-1431655739,1431655780,-1431655739,1431655730,-1431655692,1431655781,-1431655731,1431655690,-1431655681,1431655780,-1431655738,1431655782,-1431655692,1431655734,-1431655781,1431655736,-1431655717,1431655780,-1431655784,1431655725,-1431655782,1431655778,-1431655726,1431655786,-1431655788,1431655786,-1431655722,};int li[10000];memset(li, 0, sizeof(li));li[0] = 0; li[1] = 1;for (int i = 2; i < 6000; i++)li[i] = 2 * li[i - 2] + li[i - 1];for (int i = 0; i < 76; i++) {int tmp = flag[i] ^ li[i * i];printf("%c", tmp);}
}

moectf{4f73r_a11_7h1s_71m3~D0_y0u_r3a11z3_7h3_m3an1ng_0f_T1m3_c0mp13x17y???}

总结

  1. 递归转循环

MoeCTF 2021Re部分------ez(递归转循环)相关推荐

  1. [python]练习之递归和循环实现斐波拉契数列

    1 # 程序功能:用递归和循环实现斐波拉契数列 2 # 0 1 1 2 3 5 8 13 21 34 3 4 def digui_fibo(number): 5 if number == 1: 6 r ...

  2. 递归的效率问题及递归与循环比较

    1.所谓的递归慢到底是什么原因呢? 大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的.具体是每次调用函数本身要保存的内容包括:局 ...

  3. 一层循环时间复杂度_数据结构:二叉排序树的前/中/后序遍历(递归与循环两种版本)...

    树的设计初衷与操作时间复杂度 树这种数据结构的出现主要是对链表数据结构的优化,链表数据结构是线性结构,操作一般需要O(N)的时间复杂度,树是链表的变形,即链表的每个节点包含一个节点,而树的节点可以包含 ...

  4. 二分查找法(递归与循环实现)

    问题: 给定一个排序数组和一个数k,要求找到第一个k的位置和最后一个k的位置 解析: 由于给定的数组是从小到大排序的,故可以按照二分查找法来找,下面分别从递归和循环两种方法来阐述: //递归方法 in ...

  5. 数据结构与算法--再谈递归与循环(斐波那契数列)

    再谈递归与循环 在某些算法中,可能需要重复计算相同的问题,通常我们可以选择用递归或者循环两种方法.递归是一个函数内部的调用这个函数自身.循环则是通过设置计算的初始值以及终止条件,在一个范围内重复运算. ...

  6. python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...

    Python 递归函数基例 2. 关于递归函数基例的说明,以下选项中错误的是 A 递归函数的基例决定所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解. 例如:斐波那契数列递归,f(n) ...

  7. php+求二分查找递归算法,PHP二分查找(递归和循环)

    二分查找可以通过递归和循环来实现, 思路如下: 将要查找的数和中间数进行比较, 如果相等,则表示找到,返回下标 如果要查找的数小于中间这个数,则说明要查找的数分布在数组左边,修改right边界,使其等 ...

  8. 递归和循环两种方法完成树的镜像转换

    /* copyright@nciaebupt 转载出处:http://blog.csdn.net/nciaebupt/article/details/8506038 题目:输入一颗二元查找树,将该树转 ...

  9. 剑指offer_递归与循环---变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路 关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = ...

最新文章

  1. 采用UDP协议实现PIC18F97J60 ethernet bootloader
  2. 吐血总结:AQS到底是什么?
  3. bean定义的继承 - Spring Framework reference 2.0.5 参考手册中文版
  4. python导入机制及importlib模块
  5. 【Antlr】Antlr API 简介
  6. [渝粤教育] 中国地质大学 信息检索 复习题
  7. python实现mapreduce求平均值
  8. android ImageView加圆角
  9. ConstraintLayout约束控件详解
  10. qt结合arcgis for qt开发(鼠标点击地图获取坐标,坐标转换)
  11. 刀具半径补偿 c语言,数控铣床编程时刀具半径补偿指令及运用
  12. a标签的href属性与事件修饰符阻止默认行为
  13. 双系统怎么给Linux扩容,linux/win 双系统环境下为linux扩容
  14. PHPstrom + xdebug + postman断点调试代码 php谷歌浏览器代码断点调试
  15. 中国提取市场趋势报告、技术动态创新及市场预测
  16. 哥尼斯堡的“七桥问题” (25分)
  17. 物理学中的衔尾蛇(Ouroboros)
  18. 数据库显示连接服务器错误怎么解决方法,怎样解决数据库连接出错问题
  19. MySQL之——数据库的基本操作
  20. 湖仓一体(Lakehouse)是什么?

热门文章

  1. 机器人鸣人是哪一集_火影里的五个机器人,第一个比鸣人还厉害,机器丁次你都没见过...
  2. left join 不重复_R语言ETL工程:连接(join)
  3. AI:《DEEP LEARNING’S DIMINISHING RETURNS—深度学习的收益递减》翻译与解读
  4. 成功解决 “this version of pandas is incompatible with numpy < 1.15.4\n“ImportError: this version of pand
  5. Python语言学习之字母A开头函数使用集锦:assert用法之详细攻略
  6. 成功解决解决VM软件安装Linux的Ubuntu过程,开启Linux出现Oprating System not found错误
  7. sobol敏感性分析 matlab代码
  8. flot中文API(转载)
  9. 【转】C#正则表达式小结
  10. Centos7开启SSH服务