#include <iostream> #include <cstring> using namespace std; const int N=200003,null=0x3f3f3f3f; int h[N]; bool find1(int x){ int k=(x%N+N)%N; while(h[k]!=null && h[k]!=x){ k++; if(k==N) k=0; } return
为了解决当scanf读取字符串后遇到空格时候就会匹配结束 ,比如“hello world” gets取地址 puts打印出来,等于printf("%s\n",c); #include <stdio.h> int main() { char c[20];//字符数组的数组名里存的就是字符数组的起始地址 gets(c);//等于scanf("%s",c);这种可以直
CF1244C The Football Season 洛谷链接 题意:求一组 $x,y(x + y \le n)$,使得 $w \cdot x + d \cdot y = p$。 看到这样的题,第一反应当然是用扩欧直接写。 然而本题数据规模太大,会导致 $\text{TLE}$。 换一种思路:题目中指明 $w \gt d$,从这个角度下手。 要让 $x+y \le n$,不难发现只
半年没做过pwn题了,试着用这个比赛的题来捡一捡知识点。 dota main函数中需要绕过两个判断才能进入存在漏洞的函数。 第一个判断很简单,输入“dota”就行了。 第二个判断,需要先让v5小于0,在经过v5=-v5之后,继续让v5小于0,看看汇编是怎么样的。 NEG是汇编指令中的求
一、表示字符串和字符串I/O 字符串是以空字符(\0)结尾的插入类型数组。 字符串常量属于静态储存类别。 字符串储存在静态储存区。 1、字符串数组 char *str[4]; 二、字符串输入 输入字符串首先要分配空间。输入的长度应该是字符串的的长度(一些较老的版本,是输入的长度应该是字
C. Hasan and his lazy students #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e3 + 10; ll sum[N][N]; int dp[N], a[N]; int main() { int cass; for (scanf("%d", &cass); cass; cass--) {
#include <iostream>#include <algorithm>using namespace std;bool is_prim(int n){ if(n<2) return false; for(int i=2;i<=n/i;i++)//i<=sqrt(n)每次求的时候会调用一下sqrt()函数 if(n%i==0)//i*i<n 假如i是int型时最大是2147483647,i*i存在溢出风险,溢出会出现负数影响判断
一、文件操作 f=File.new("#{File.dirname(__FILE__)}/temp.m", "w+") f.puts("I am lmy") 1、文件模式 "r" :只读。从文件开头开始(默认模式)。 "r+" :读写。从文件的开头开始。 "w" :只写。将现有文件截断为零长度,或创建用于写入的新文件。 "w+" :读写。将现有文件截
目录一、nhhhsdg.c二、 运行结果示例2.1 3皇后2.2 4皇后2.3 8皇后 【TDTX】 【C99】 【注1】本文实现了回溯点的提示,以及实现了返回到第N层的提示! 【注2】只输出了求解与输出了探测得到的第一个解,其余解也可以轻易得到! 一、nhhhsdg.c #include <stdio.h> #include <stdlib.h> #inc
//创建一个较为完善的输入函数 #include <stdio.h> #define SIZE 80 void input_char(char *st,int n); int main(void) { char names[SIZE]; input_char(names,SIZE); puts("print the characters :"); puts(names); return 0; } void input_char(char *st
C语言【微项目12】—N皇后问题[放置N个皇后在棋盘](采用回溯法-递归方式实现)【2021-12-19】 一、nhhhsdg.c二、 运行结果示例2.1 3皇后2.2 4皇后2.3 8皇后 【TDTX】 【C99】 【注1】本文实现了回溯点的提示,以及实现了返回到第N层的提示! 【注2】只输出了求解与输出了探
一个栈溢出的题,没开PIE 程序先打开随机数发生器,读入然后加密,与输入的对比,不同时可输入0x400数据(溢出)相同则跳出循环。 fd = open("/dev/urandom", 0); while ( 1 ) { puts("\nFind a MD5 hash collision!"); printf("target: "); read(fd, buf, 0x3FFuLL);
什么是大小端? "endian"一词出自茨威格的讽刺小说《格列夫游记》。小人国的内战源于吃鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过6次叛乱,其中一个皇帝送了命,另一个丢了王位。 大端模式:是指数据的高字节保存在内存的低地址中;小端模式:是指数
C语言for循环应用小程序实例 选择排序法 #include <stdio.h> #define N 4 int main() { int a[N],i,j,k,t; //输入数组元素 for(i=0; i<N; i++) { printf("请输入a[%d]\t",i); scanf("%d",&a[i]); } //插入排序 for(i=0; i
TCL脚本语法入门 数字后端工具多用tcl脚本,功能强大。 一、变量置换 $将后面的变量置换成它的值 []内是一个独立的tcl语句 换行符、空格等特殊字符加上\变成普通字符。 \t表示空格 \n表示回车 “”号内特殊字符仍为特殊字符,但{}内都变成普通字符。 #注释 二、变量、数组、列
1081 检查密码 (15 分) 题目链接 算法分析 用两个变量ap_digit和ap_zm来记录是否有数字和字母出现,然后进行特判并输出就好了. 测试点 测试点2是在考察是否有考虑字符串中含有空格 代码实现 #include<bits/stdc++.h> using namespace std; int main(){ string s; int n;
#include <iostream> #include <cstring> #include <algorithm> #include <unordered_set> using namespace std; const int N = 110, M = 10010; int n, k; int s[N], f[M]; int sg(int x) { if (f[x] != -1) return f[x]; unordered_set
分析 步骤说明 完整exp 对format1进行分析: 使用IDA对该程序进行初步分析。 该程序主要部分有main函数,puts函数,exit函数: getname函数,read函数,printf函数: 该程序是通过read获取一个输入字符串并将其放入buf,然后使用printf输出。但是printf函数中只有&buf一个参数,存在格式化字符
链接: 洛谷 题目大意: 一棵树有 \(n\) 个节点,第 \(i\) 个节点的点权为 \(a_i\)。 你需要回答:能不能选择这棵树中的至少 \(1\) 条边、至多 \(k-1\) 条边删除,使得删除完这些边的树每个联通块的点权异或和相等。 思路: \(a\oplus a=0\) 真的好用,就可以直接搜索了。 代码: const int N = 1
snprintf 函数错用造成栈溢出漏洞 32位程序,没有canary ,又是一个rop的题 先看程序: puts("First, you need to tell me you name?"); fgets(byte_804A180, 256, stdin); v4 = strrchr(byte_804A180, 10); if ( v4 ) *v4 = 0; printf("Hello %s\n", byte_804A180); p
1015 Reversible Primes (20 分) 题目思路 本体是输入的N只要不是附属就继续读取数字,第一个是十进制数,第二个是代表要转化的进制。 23 2代表23再2进制转化的结果,再进行反转得到十进制是29也是质数。 构建质数判别器,=1返回不是质数,接下来能被整除也不是质数 构建反转后的值,
https://pintia.cn/problem-sets/994805342720868352/problems/994805377432928256 #include<bits/stdc++.h> using namespace std; const int N=1e5*3+10; int n,x,flag; vector<int>a,b,c; void solve1() { c=a; for(int i=1;i<n;i++) {
#include <bits/stdc++.h> using namespace std; #define x first #define y second map<int, int> a; map<pair<int, int>, int > b; map<int, pair<int, int> > c; int main() { for (int i = 1; i <= 3; i ++ ) { a[i] =
https://codeforces.com/contest/1605 A: //由于可以转移,最终都可以1 1 1这种比例,如果不是%3==0,0 1 1,差1 void test() { int a,b,c; _read(a),_read(b),_read(c); if((a+b+c)%3==0) puts("0"); else puts("1"); } B:` //暴力遍历就可以,10序列下标计入答案,排
题目描述 题解 构造好难,想了好久。 先判掉 n − m n-m n−m 不是 k −