长城杯铁人三项初赛-REVERSE复现
前言
记录记录
1.LoginToMe
int __fastcall main(int argc, const char **argv, const char **envp)
{unsigned int v3; // eaxchar s[96]; // [rsp+10h] [rbp-70h] BYREFint v6; // [rsp+70h] [rbp-10h]int v7; // [rsp+78h] [rbp-8h]int i; // [rsp+7Ch] [rbp-4h]memset(s, 0, sizeof(s));v6 = 0;printf("input:");__isoc99_scanf("%s", s);if ( strlen(s) == 20 ){v3 = time(0LL);srand(v3);v7 = rand() % 100;for ( i = 0; i < v7; ++i );if ( *(unsigned __int16 *)s * *(unsigned __int16 *)&s[2] == 342772773&& *(unsigned __int16 *)s + *(unsigned __int16 *)&s[2] == 39526&& *(_DWORD *)&s[4] - *(_DWORD *)&s[8] == 1005712381&& *(unsigned __int16 *)&s[4] + *(unsigned __int16 *)&s[6] == 56269&& *(unsigned __int16 *)&s[8] - *(unsigned __int16 *)&s[10] == 15092&& s[4] * s[8] == 10710&& s[6] * s[10] == 12051&& s[7] + s[11] == 172&& *(unsigned __int16 *)&s[12] * *(unsigned __int16 *)&s[14] == 171593250&& *(unsigned __int16 *)&s[12] + *(unsigned __int16 *)&s[14] == 26219&& *(unsigned __int16 *)&s[16] * *(unsigned __int16 *)&s[18] == 376306868&& *(unsigned __int16 *)&s[16] + *(unsigned __int16 *)&s[18] == 40341 ){puts("check ok~!");}else{puts("check failed~!");}}return 1;
}
分析可知这是一个验证程序输入的问题,如果多轮程序输入的与条件一样则是会检查正确,会进入该轮的下一轮,否则会输出错误,逆向的话要对其爆破一个唯一解,这里可以用z3库进行操作
import libnum
from z3 import *for i in (range(33, 128)):x = Solver()ans = []s = [BitVec(('%d' % i), 32) for i in range(5)]x.add(s[0] & 0xff == i)x.add((s[0] & 0xffff) * (s[0] >> 16) == 342772773, (s[0] & 0xffff) + (s[0] >> 16) == 39526, s[1] - s[2] == 1005712381, (s[1] & 0xffff) + (s[1] >> 16) == 56269, (s[2] & 0xffff) - (s[2] >> 16) == 15092, ((s[1]) & 0xff) * ((s[2]) & 0xff) == 10710, ((s[1] >> 16) & 0xff) * ((s[2] >> 16) & 0xff) == 12051, ((s[1]) >> 24) + ((s[2]) >> 24) == 172, (s[3] & 0xffff) * (s[3] >> 16) == 171593250, (s[3] & 0xffff) + (s[3] >> 16) == 26219, (s[4] & 0xffff) * (s[4] >> 16) == 376306868, (s[4] & 0xffff) + (s[4] >> 16) == 40341)if x.check() == sat:model = x.model()for j in s:print(libnum.n2s(model[j].as_long())[::-1].decode(), end='')print()
然后输出就会爆出一个唯一解
由于比赛有环境,赛后没有环境,所以这道题就这样了
2.茶(tea)
主函数
int __fastcall main(int argc, const char **argv, const char **envp)
{char Str[64]; // [rsp+20h] [rbp-70h] BYREFchar v5[39]; // [rsp+60h] [rbp-30h]char v6[3]; // [rsp+87h] [rbp-9h] BYREFint i; // [rsp+8Ch] [rbp-4h]_main(argc, argv, envp);v5[0] = -119;v5[1] = -48;v5[2] = -121;v5[3] = 54;v5[4] = -55;v5[5] = 69;v5[6] = -39;v5[7] = -48;v5[8] = 113;v5[9] = 59;v5[10] = 54;v5[11] = -109;v5[12] = 24;v5[13] = -65;v5[14] = 1;v5[15] = 99;v5[16] = -87;v5[17] = 54;v5[18] = 126;v5[19] = -9;v5[20] = -1;v5[21] = 32;v5[22] = 25;v5[23] = -126;v5[24] = -51;v5[25] = 119;v5[26] = 123;v5[27] = -118;v5[28] = 18;v5[29] = 48;v5[30] = 34;v5[31] = 80;v5[32] = -106;v5[33] = -87;v5[34] = -53;v5[35] = 92;v5[36] = 43;v5[37] = 33;v5[38] = -109;qmemcpy(v6, "ta}", sizeof(v6));printf("plz input your flag:");scanf("%42s", Str);if ( strlen(Str) != 42 ){printf("wrong length");exit(0);}for ( i = 0; i <= 39; i += 8 )encrypt((unsigned int *)&Str[i], key);for ( i = 0; i <= 41; ++i ){if ( Str[i] != v5[i] ){printf("error");exit(0);}}printf("win");return 0;
}
加密流程
DWORD *__fastcall encrypt(unsigned int *a1, _DWORD *a2)
{_DWORD *result; // raxunsigned int i; // [rsp+20h] [rbp-10h]int v4; // [rsp+24h] [rbp-Ch]unsigned int v5; // [rsp+28h] [rbp-8h]unsigned int v6; // [rsp+2Ch] [rbp-4h]v6 = *a1;v5 = a1[1];v4 = 0;for ( i = 0; i <= 0x1F; ++i ){v4 -= 1640531527;v6 += (v5 + v4) ^ (*a2 + 16 * v5) ^ ((v5 >> 5) + a2[1]);v5 += (v6 + v4) ^ (a2[2] + 16 * v6) ^ ((v6 >> 5) + a2[3]);}*a1 = v6;result = a1 + 1;a1[1] = v5;return result;
}
key
0x78, 0x56, 0x34, 0x12, 0x0D, 0xF0, 0xAD, 0x0B, 0x14, 0x13,
0x20, 0x05, 0x21, 0x43, 0x65, 0x87
脚本
#include <stdio.h>int main() {// Encrypted data blocks, each block is 8 bytes (two unsigned integers)unsigned int a1[] = {0x3687d089, 0xd0d945c9,0x93363b71, 0x6301bf18,0xf77e36a9, 0x821920ff,0x8a7b77cd, 0x50223012,0x5ccba996, 0x7493212b};// Key used for encryption/decryptionunsigned int a2[4] = { 0x12345678, 0x0BADF00D, 0x5201314, 0x87654321 };// Decrypt each block of datafor (int i = 0; i <= 9; i += 2) {int j = 0;unsigned int delta = 0xc6ef3720;unsigned int v5 = a1[i + 1];unsigned int v6 = a1[i];// Perform the decryption roundsdo {++j;v5 -= (v6 + delta) ^ (a2[2] + 16 * v6) ^ ((v6 >> 5) + a2[3]);v6 -= (v5 + delta) ^ (*a2 + 16 * v5) ^ ((v5 >> 5) + a2[1]);delta += 1640531527;} while (j <= 31);// Store the decrypted values back into the arraya1[i + 1] = v5;a1[i] = v6;}// Print the decrypted data as charactersfor (int i = 0; i <= 9; i++) {for (int j = 0; j <= 3; j++) {printf("%c", (a1[i] >> (j * 8)) & 0xFF);}}return 0;
}
输出
flag{7b06c572-d317-49cf-8ff2-8e402e1ea53}
3.VM
加密是固定的单字节加密,动调程序获取数据后进行简单解密即可
#include <stdio.h>
#include <stdint.h>int main() {// Encrypted data arrayuint8_t codee[] = {0x05, 0x82, 0x02, 0x01,0x41, 0xA5, 0xE6, 0x00,0x2D, 0xA0, 0xDF, 0x00,0x16, 0xCB, 0x81, 0x00,0x8F, 0xBC, 0xA6, 0x00,0xF6, 0xC0, 0xA3, 0x00,0x6D, 0xB0, 0xD2, 0x00,0xA4, 0x9D, 0xE7, 0x00,0xB9, 0xD2, 0x7A, 0x00,0x7B, 0xB4, 0xB3, 0x00,0xF3, 0xCA, 0x8C, 0x00,0x4C, 0xC2, 0x87, 0x00,0xC7, 0xEE, 0x26, 0x00,0x53, 0x8B, 0x06, 0x01,0x41, 0x91, 0x0E, 0x01,0xA1, 0xB7, 0x9D, 0x00,0xD6, 0xD3, 0x77, 0x00,0x54, 0xAE, 0xCF, 0x00,0x2D, 0x99, 0xF6, 0x00,0xAE, 0xBA, 0xA9, 0x00,0x67, 0xA7, 0xD2, 0x00,0x31, 0xA6, 0xF2, 0x00,0xA1, 0xEE, 0x26, 0x00,0xE4, 0x87, 0x15, 0x01,0x4A, 0xF2, 0x1D, 0x00,0x82, 0xC3, 0xA3, 0x00,0x21, 0x90, 0x02, 0x01,0x4B, 0xB9, 0xB5, 0x00,0xA0, 0xCB, 0x6D, 0x00,0x7D, 0x86, 0x2E, 0x01,0x70, 0xA5, 0xEF, 0x00,0xE3, 0xC7, 0x85, 0x00,0xDB, 0xF0, 0x26, 0x00};// Process the encrypted data and print characters in reverse orderfor (int i = sizeof(codee) / sizeof(codee[0]) - 4; i >= 0; i -= 4) {uint16_t low_word = (codee[i + 1] << 8) | codee[i];uint16_t high_word = (codee[i + 3] << 8) | codee[i + 2];printf("%c", (0xffff ^ low_word) / high_word);}// Another set of data to be printed in reverse orderint aa[] = {125, 101, 110, 106, 105, 100, 97, 109, 96, 109, 98, 118, 122, 114, 105, 119,96, 101, 107, 106, 108, 95, 123, 111, 129, 96, 111, 101, 124, 103, 97, 109, 108};printf("\n\n\n"); // Print three newlines// Print the reversed data from 'aa'for (int i = 0; i < sizeof(aa) / sizeof(aa[0]); ++i) {printf("%c ", aa[sizeof(aa) / sizeof(aa[0]) - i - 1]);}// Print additional characters based on bitwise operationsprintf("%c", (0xffff ^ 0xf0db) / 0x26);printf("%c", (0xffff ^ 0xc7e3) / 0x85);printf("%c", (0xffff ^ 0xa570) / 0xef);return 0;
}
输出
flag{do_you_like_virtual_machine}
相关文章:
长城杯铁人三项初赛-REVERSE复现
前言 记录记录 1.LoginToMe int __fastcall main(int argc, const char **argv, const char **envp) {unsigned int v3; // eaxchar s[96]; // [rsp10h] [rbp-70h] BYREFint v6; // [rsp70h] [rbp-10h]int v7; // [rsp78h] [rbp-8h]int i; // [rsp7Ch] [rbp-4h]memset(s, 0, s…...
与终端同居日记:Shell交响曲の终极共舞指南
前言: 《与终端同居日记》特别篇:当文件们开始叠罗汉 亲爱的压缩包驯兽师: 欢迎来到「文件马戏团」!在这里,zip是那个强迫症整理狂,tar是爱玩俄罗斯套娃的魔法师,而gzip——绝对是偷偷给文件喝…...
学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、ShaderPass渲染通道),案例一
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.EffectComposer 后期…...
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
文章目录 DIY 实战:从扫雷小游戏开发再探问题分解能力3 问题分解实战(自顶向下)3.2 页面渲染逻辑3.3 事件绑定逻辑 4 代码实现(自底向上)4.1 页面渲染部分4.2 事件绑定部分 写在前面 本篇将利用《Learn AI-assisted Py…...
【数据可视化-27】全球网络安全威胁数据可视化分析(2015-2024)
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力
前引:当算力不再是“奢侈品” ,在人工智能、3D渲染、科学计算等领域,算力一直是横亘在个人与企业面前的“高墙”。高性能服务器价格动辄数十万元,专业设备维护成本高,普通人大多是望而却步。然而,Cephalon算…...
CSS简单实用的加载动画、骨架屏有效果图
效果图 .wxml <!-- 骨架屏 --> <view wx:for"{{skeleton}}" wx:key"index" class"container center" style"--w:{{item.w}}rpx;--h:{{item.h}}rpx" /> <!-- 加载 --> <view class"arco-loading center&quo…...
图论算法体系:并查集、生成树、排序与路径搜索全解析
从图论的基础理论入门,到深搜广搜搭建起图论的骨架。 从并查集到最小生成树,从拓扑排序到最短路径。 .... 群星璀璨😉 并查集最小生成树 Prim算法Kruskal算法 拓扑排序(kahn算法)最短路径 Dijkstra算法 Dijkstra朴素Di…...
OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑
目录 引言:一场蓄谋已久的"蛇吞象"计划 一、Chrome:数字世界的"黄金入口" 1.1 用户规模对比:ChatGPT与Chrome的悬殊差距 1.2 Chrome的生态价值远超浏览器本身 二、OpenAI的"入口焦虑"与战略布局 2.1 AI时…...
DrissionPage 请求一次换一个代理(不重启chrome)
实现原理:通过插件实现 # !/usr/bin/python3 # -*- coding:utf-8 -*- """ author: JHC000abcgmail.com file: switch_ip.py time: 2025/4/23 22:05 desc:"""R""" 1. chrome s商店下载Proxy SwitchyOmega 3 (ZeroOme…...
JBoltAI 赋能金融文档:基于 RAG 的基金招募说明书视觉增强方案
在金融领域,基金招募说明书是投资者了解基金产品关键信息的重要文件。然而,这类文件通常以 PDF 格式呈现,内容繁杂、文本枯燥,对于普通投资者而言,理解起来存在一定难度。而如何利用 AI 技术对这类枯燥文本进行视觉增强…...
【玩转全栈】—— Django+vue3+讯飞星火API 实现前端页面实时AI答复
技术栈:vue3 element-plus axios pinia router Django5 websocket 讯飞星火API 本文将实现一个 AI 聊天对话功能,将前端用户输入问题以及之前对话发送给后端,通过 api 访问大模型,返回前端实时对话数据。 调用 讯飞星火API…...
1.1 java开发的准备工作(入门)
准备工作 一.JDK 开始写java程序之前需要安装jdk jdk是java开发工具,包含着JRE和里面的JVM(虚拟机,可以使得不同环境下都能运行Java程序),和开发工具。 二.了解写程序的三大步骤步骤 java成功运行主要需要经过代码编写,编译&a…...
socket编程基础
上一篇 --- 网络基础概念(下)https://blog.csdn.net/Small_entreprene/article/details/147320155?fromshareblogdetail&sharetypeblogdetail&sharerId147320155&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 理…...
根据定义给出json_schema:
根据您提供的智能体定义,以下是符合JSON Schema Draft-07规范的完整架构描述(包含中文注释说明): {"$schema": ""title": "智能体架构规范","type": "object","req…...
深入微服务核心:从架构设计到规模化
作者:腾讯云开发者 原文:深入微服务核心:从架构设计到规模化 01 微服务 什么是微服务? 微服务就是一些协同工作的小而自治的服务。我们在一个单体系统中,通常会采用一些抽象层或者模块来保证代码的内聚性,…...
linux与c语言基础知识(未全部完成)
文章很多处理论,没办法写出来,(linux的一些理论问题,我有时间后,会逐个解决) 文章大多数的理论来字这个链接, C语言快速入门-C语言基础知识-CSDN博客 一. linux(Ubuntu) …...
【专题刷题】滑动窗口(四):
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
小白自学python第一天
学习python的第一天 一、常用的值类型(先来粗略认识一下~) 类型说明数字(number)包含整型(int)、浮点型(float)、复数(complex)、布尔(boolean&…...
Redis 服务自动开启、设置密码和闪退问题
一、Redis 服务自动开启 1、以管理员身份运行命令提示符 右键点击“命令提示符”图标,选择“以管理员身份运行”。 2、注册为 Windows 服务 redis-server --service-install 3、启动服务 redis-server --service-start 4、测试 Redis 连接 redis-cli ping …...
2025年渗透测试面试题总结-拷打题库14(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库14 1. WAF存在的意义 2. 威胁感知能力衡量指标 3. 感知规则有效性…...
java后端开发day35--集合进阶(四)--双列集合:MapHashMapTreeMap
(以下内容全部来自上述课程) 1.双列集合 1.1 特点 双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键值这个整体,我们称之为“键值对”…...
进行网页开发时,怎样把function()中变量值在控制台输出,查看?
在网页开发过程中,为了及时了解JavaScript中的function函数中的变量值,可以用控制台命令console.log()把变量的值在控制台输出,方便调试时对函数变量值进行了解。 看下面的一段示例: <!DOCTYPE html> <html> &l…...
【计算机网络】现代网络技术核心架构与实战解析
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:TCP服务端/客户端通信案例2:Wireshark抓包分析 三、性能对比测试方法…...
Python内置函数---bool()
用于将任意对象转换为布尔值(True或False) 1. 基本语法与参数 bool(x) - 参数:x为可选参数,可以是任意Python对象(如数值、字符串、列表、自定义对象等)。 - 返回值:根据x的真值性返回True或Fa…...
Vue 3中如何封装API请求:提升开发效率的最佳实践
在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时。随着Vue 3的广泛应用,如何高效地封装API请求,既能提升代码的可维护性,又能确保代码的高复用性,成为了很多开发者关注的话题。 在本文中&…...
【Redis】redis主从哨兵
Redis 主从复制 在访问量极高的场景下,单台 Redis 已难以承载所有请求,且单点故障风险高。通过主从复制,可以实现读写分离、数据备份与高可用。 概念 主节点(Master):负责写操作,将数据变更同…...
16.第二阶段x64游戏实战-分析二叉树结构
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:15.第二阶段x64游戏实战-分析怪物血量(遍历周围) 首先通…...
vue | 不同 vue 版本对复杂泛型的支持情况 · vue3.2 VS vue3.5
省流总结:defineProps 的泛型能力,来直接推导第三方组件的 props 类型 引入第三方库的类型,并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型(包含联合类型、可选属性、交叉类型、条件类型等࿰…...
OpenGL学习笔记(Blinn-Phong、伽马矫正、阴影)
目录 Blinn-PhongGamma矫正GammaGamma矫正实现方法sRGB纹理衰减 阴影shadow mapping渲染阴影改进阴影贴图PCF GitHub主页:https://github.com/sdpyy1 OpenGL学习仓库:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdp…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
day4 pandas学习
%pip install openxyxl 找一个自己觉得有意思的文件。我找的是成绩单来玩。 这节学的比较耗时了,大概用了60分钟。 import pandas as pd data2 pd.read_csv(rD:\python代码区\代码随想录挑战-调试区\python训练营\1_计算类专业分流学生成绩排名.csv) #print(data)…...
【Java学习笔记】循环结构
循环结构 一、for循环 for循环结构 for(循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句) }for循环写死循环 for(;;){语句 }注意点:循环变量的初始化在for语句内,属于是局部变量,在全局中会出现未定义…...
URP-UGUI交互功能实现
一、非代码层面实现交互(SetActive) Button :在OnClick()中添加SetActive方法(但是此时只首次有效) Toggle :在OnClick()中添加动态的SetActive方法 &#…...
08-IDEA企业开发工具-集成AI插件通义灵码
需要登陆才可使用!!! 1. 安装AI编程插件 找到插件: 在IDEA的设置中,找到插件(Plugins)部分。安装插件: 搜索“通义灵码”,找到后点击安装(Install),接受条款…...
解决报错:this[kHandle] = new _Hash(algorithm, xofLen);
前端项目编译报错: node:internal/crypto/hash:68this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:68:19)at Object.createHash (node:crypto:138:10)at modu…...
使用 Streamlit 打造一个简单的照片墙应用
在现代 web 开发中,快速构建交互式应用是一项重要的技能。Streamlit 是一个强大的 Python 库,允许开发者以最小的代码量创建美观且功能丰富的 web 应用。今天,我们将通过分析一段简单的 Streamlit 代码,展示如何构建一个照片墙应用…...
深度学习优化器和调度器的选择和推荐
一、常用优化器对比 1. 随机梯度下降(SGD) 原理:每次迭代使用小批量数据计算梯度并更新参数。优点:实现简单,适合大规模数据集。缺点:收敛速度慢,容易陷入局部最优或鞍点。适用场景࿱…...
“时间”,在数据处理中的真身——弼马温一般『无所不能』(DeepSeek)
电子表格时间处理真理:数值存储最瘦身,真身闯关通四海。 笔记模板由python脚本于2025-04-23 22:25:59创建,本篇笔记适合喜欢在电子表格中探求时间格式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验…...
为什么Spring中@Bean注解默认创建单例Bean
在Spring框架中,使用Bean注解定义的对象默认确实是单例的,这是由Spring容器的设计哲学和实际需求决定的。下面我从多个角度解释这一设计选择的原因和机制。 1. Spring Bean作用域基础 Spring定义了多种Bean作用域,其中默认是单例(Singleton…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,共计266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
JDK(Ubuntu 18.04.6 LTS)安装笔记
一、前言 本文与【MySQL 8(Ubuntu 18.04.6 LTS)安装笔记】同批次:先搭建数据库,再安装JDK,后面肯定就是部署Web应用:典型的单机部署。“麻雀虽小五脏俱全”,善始善终,还是记下来吧。…...
Java 拦截器完全指南:原理、实战与最佳实践
一、引言 拦截器的基本概念 在现代 Java Web 开发中,拦截器(Interceptor)是一种用于在请求处理前后插入自定义逻辑的机制。简单来说,它是一种“横切逻辑处理器”,可以用来对请求进行预处理、后处理,甚至终…...
2025.04.23华为机考第二题-200分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 魔法彩灯森林 问题描述 在卢小姐的魔法花园中,有一棵神奇的彩灯树。这棵树的每个节点都装有一盏魔法灯,灯有三种颜色状态:红色(用数字1表示)、绿色(用数字2表示)和蓝色(…...
【Leetcode 每日一题】1399. 统计最大组的数目
问题背景 给你一个整数 n n n。请你先求出从 1 1 1 到 n n n 的每个整数 10 10 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。 请你统计每个组中的数字数目,并返回数字数目并列最多的组…...
系统重装——联想sharkbay主板电脑
上周给一台老电脑重装系统系统,型号是lenovo sharkbay主板的电脑,趁着最近固态便宜,入手了两块长城的固态,装上以后插上启动U盘,死活进不去boot系统。提示 bootmgr 缺失,上网查了许久,终于解决了…...
Python数据清洗笔记(上)
一、数据清洗概述 数据清洗是数据分析过程中至关重要的一步,约占整个数据分析过程的60%-80%的时间。主要包括处理缺失值、异常值、重复值、格式不一致等问题。 二、常用工具 主要使用Python的Pandas库进行数据清洗: import pandas as pd import nump…...
三、Python编程基础03
目录 一、debug 调试的使用1. 打断点2. 右键 Debug 运行代码3. 单步执行代码,查看过程 二、字符串1、定义与下标引用2、切片3、查找4、去除空白字符5、转换大小写与拆分6、其他方法-替换、连接、是否为纯数字7、登录案例优化 三、列表 list1、列表基础操作2、案例: …...
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (1)电机及专栏介绍
一、前言 本系列是我继 《西门子S7-1200PLC 控制步进电机 MD-4240-PN》系列专栏后,新开的一篇专栏。 系列的主题围绕 S7-200SMART Profinet闭环步进(MD-4250-PN) 触摸屏的硬件,预计作四篇文章,分别为:专栏介绍、硬件介绍、PLC…...
NoSQL 简单讲解
目录 1. NoSQL 的背景与意义 1.1 数据库的演变 1.2 NoSQL 的兴起 2. NoSQL 数据库的分类 2.1 键值存储(Key-Value Stores) 2.2 文档数据库(Document Stores) 2.3 列族存储(Column-Family Stores) 2.…...