题目大意 给出两个整数 a , b a,b a,b,可以操作无限次。 每次操作任意选取一个正数 x
C Draw Grids 博弈论 可以发现,两人最后总是可以走n*m-1步,判断n*m-1的奇偶性即可,且样例比y较小,打表也可~ 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 int main() 5 { 6 cin>>n>>m; 7 n*=m; 8 n--; 9 if(n%2)puts
模板 struct trie{ int nex[maxn][26],idx; bool exist[maxn]; // 该结点结尾的字符串是否存在 void insert(string s,int l){ // 插入字符串 int p=0; for(int i=0;i<l;i++){ int c=s[i]-'a'; if(!nex[p][c]) nex[p][c]=++cnt;// 如果没有,就添加结点 p=nex[p][c]
Ruby on Rails是一个功能强大的WEB开发框架,在这里我们将会学到一些经常用到的Ruby on Rails内置方法,帮助大家熟练掌握其应用技巧。 Ruby on Rails自动生成文档技巧大讲堂 Ruby代码管理经验分享 Ruby创建构造器技巧分享 Ruby异常处理结构特点介绍 Ruby数学表达式中各种应用解析 Ru
ciscn_2019_en_2 1.ida分析 在encrypt函数中存在栈溢出漏洞,但是会把输入过滤。 2.checksec 3.解决 from pwn import * from LibcSearcher import * context.log_level='debug' s p=remote('node4.buuoj.cn',27829) elf=ELF('./ciscn_2019_en_2') ret=0x
传送门 A.Odd Set 思路: 判断奇偶个数是否相等。 代码: int a[maxn]; void solve(){ int n=read,cnt0=0,cnt1=0; rep(i,1,2*n){ a[i]=read; if(a[i]&1) cnt1++; else cnt0++; } if(cnt0==cnt1) puts("Yes"); else puts("No"); } int main(){ int _=read
题目描述 可执行文件分析 该可执行文件是32位 无壳 可直接拖进ollydgg或者IDA IDA静态分析 发现可疑字符串 主函数反汇编 void main() { char v0; // [sp+17h] [bp-35h]@1 int v1; // [sp+30h] [bp-1Ch]@1 int v2; // [sp+34h] [bp-18h]@1 signed int v3; // [sp+38h
pwn 签到题 nc 连上就有flag pwn 02 简单的ret2txt 先检验一下文件 是32位文件 且只有堆栈不可执行保护 checksec 结果可参考checksec 在ubuntu上运行 存在栈溢出 用IDApro 32位 打开 首先看main函数 那么接着跟到pwnme函数 可以看到buf只有9个字节 而fgets读入了50个字节,所
ciscn_2019_c_1 潜心修炼,从基础开始 这是一道没有system的ROP 解题流程 1.检查文件 $ file ciscn_2019_c_1 ciscn_2019_c_1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, B
首先,expect是一个简单的工具语言,如要工作就是进行自动化的人机交互。它的作者对Expect的定义:是一个实现自动交互功能的软件套件(a software suite for automating interactive tools),使用expect,它能帮助我们在合适的情景下进行合适的交互。 我们看一个简单的例子:我们要在
非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替, 但这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比较方便。下面分别进行介绍。 1. puts()和gets()函数 1.1 puts()函数 puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用
乘方相加 AcWing 3727 https://www.acwing.com/problem/content/3730/ 10进制数转k进制数 每个位上最大为1 超过则不能转化 代码 #include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; const int N = 100; int s[N]; int
持续更新中…… 从哪里跌倒,从哪里爬起! B 建立主席树,对每次询问算出答案,然后二分位置判断 代码:略 H 容易发现答案大时一定是k+1或者k+2,n若被k+1整除,则答案是k+1,反之是k+2 其次发现答案至少是k+1,然后可以将剩余的分配,然后每次往每一堆里塞一个就行,设n=a(k+1)+b,答案是k+1+[b/a] 但要
传送门 题意 \(Alice\)和\(Bob\)在玩游戏。 他们从一个正整数\(n\)开始轮流对它进行运算。每个回合,玩家可以从\(n\)中减去一个非\(1\)或\(n\)的因数。在他/她的回合中不能移动的玩家输。\(Alice\)总是先动。 注意,他们在每个回合中都要减去当前数字的除数。 你被要求找出如果两名玩
字符串操作常用函数 字符串的常用操作函数puts()printf、putchar和puts函数的区别 gets()当gets()函数和指针搭配使用要注意: strlen()memset()strcpy() 和 strncpy()strcpy()strncpy() strcat()strcmp()strchr() 和 strstr()strchr()strstr() strlwr() 和 strupr()strlwr()
概述 题号 难度 \(AC\)时间及记录 \(\texttt{CF550A}\) \(\texttt{洛谷难度:普及/提高-}\) \(\texttt{On 2021/06/14}\) 解析 这道题目题目意思不难理解, 我们看到样例一就知道了选择的 \(AB\) 和 \(BA\) 位置不能冲突。 所以说我们只有两种情况: 先找 \(AB\),再找 \(BA\)
文章目录 一、要点二、预备知识三、题目四、解题过程1、检查保护机制2、运行查看效果3、IDA静态分析4、栈溢出的设计5、使用本地libc.so进行分析6、泄露puts的地址、定位system的地址7、编写exp 一、要点 return to libclibc中的地址泄露和定位 二、预备知识 预备知识请
枚举类型的定义形式为:enum typeName{ valueName1, valueName2, valueName3, ...... }; enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途;typeName是枚举类型的名字;valueName1, valueName2, valueName3, ......是每个值对应的名字的列表。注意最后的;不能少。
原题链接 考察:博弈论 又到了我最喜欢的死活推不出规律的环节(. 思路: 对于n个石子堆,假定堆最大值为maxn,和为sum,如果maxn>sum-maxn那么先手必胜(先手一直取maxn堆即可). 但是如果maxn<=sum-maxn,选手就需要避免出现操作后maxn>sum-maxn的情况,此时分两种情况: maxn堆
给定正整数 \(d\) 和质数 \(p\),用至多 \(4999\) 次模 \(p\) 意义下加法、\(d\) 次幂实现模 \(p\) 意义下乘法。 \(2\le d\le 10\),\(d<p\le 10^9+9\)。 考虑到 \(xy=((x+y)^2-x^2-y^2)/2\),也就是说在 \(d=2\) 的时候我们实现减法、乘常数就做完了,都可以用龟速乘实现。 至于平方咋
B. I Hate 1111 题目链接
gets()和puts不安全,有些平台会报错,如pat. gets输入字符串时,不进行数组下标的检查,也就是说当你的数组长度是n时,输入超过该长度的字符串的时候,编译不会出错,但是运行的时候会出现数组越界或者内存泄漏的错误, 键盘输入fgets(buf,n,stdin); 输出:fputs(buf, stdout);
原题链接 考察:博弈论 思路: 威佐夫博弈,求先手必胜的第一步. 要先手必胜,即把后手面临的局面改为先手必败.当n==(m-n)*k即先手必败.这里分两种情况: (m-n)*kd,d<n时,我们可以从n堆里取,但我们需要保证新局面下m,与n的差值不变,才能保证差值*kn 从m堆里取,此时m堆的值不
1、 #include <stdio.h> int fac(int x) { if(x > 0) return x * fac(x - 1); else return 1; } int main(void) { int a, b; puts("please input two integers."); printf("a = "); scanf("%d&quo
1、 #include <stdio.h> enum animal {Dog, Cat, Monkey, Invalid}; void dog(void) { puts("wang wang\n"); } void cat(void) { puts("miao miao\n"); } void monkey(void) { puts("ji ji\n"); } enum animal