题目: 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕鼠夹(T),这只老鼠被引诱吃掉奶酪并被打…
- 抓老鼠啊~亏了还是赚了? ( 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕鼠夹(T…
1. 实验代码; #include<stdio.h> ; void search(char a,int *p){ if(a=='X'){ ) *p=; ; printf("U"); }else if(a=='T'){ ) *p=; ; printf("D"); money=money+; }else if(a=='C'){ *p=; printf("!"); money=money-; } } int main(void){ ]; s…
1.实验代码 7-1 抓老鼠啊~亏了还是赚了? (20 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出…
7-1 抓老鼠啊~亏了还是赚了? (20 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕…
7-1 抓老鼠啊~亏了还是赚了? (20 分) 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕…
猫抓老鼠分值:10 来源: 实验吧 难度:难 参与人数:8697人 Get Flag:3740人 答题人数:3944人 解题通过率:95% catch!catch!catch!嘿嘿,不多说了,再说剧透了 解题链接: http://ctf5.shiyanbar.com/basic/catch/ 原题链接:http://www.shiyanbar.com/ctf/20 [解题报告] 这是我入门Web开始写的第七道题,打开解题链接,首先第一步,先看页面的源码,我们可以知道这是一个Post请求,我们可以…
实验代码: 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕鼠夹(T),这只老鼠被引诱吃掉奶酪并…
人生的第一道CTF题目哇,鸡冻 其实只是学了一下HTTP抓包得到的都是什么,就开始上手胡搞了 题目名字叫猫抓老鼠,还疯狂暗示catch!catch!catch!catch!,就想到要用抓包其实我是因为只学过抓包 拿Burp抓的包,第一次嘛,就一点一点地读http报文 感觉基本还是能看懂的,就是有一行比较奇怪,Content-Row 网上查了一下还找不到,不如就试着把它交上去 于是就得到了KEY233333 查找网上的WRITEUP说想到了BASE64加密,就看了一下,似乎原理不是很复杂,可以自己…
实验吧web之猫抓老鼠     地址:http://www.shiyanbar.com/ctf/20 flag值:KEY: #WWWnsf0cus_NET#     解题步骤: 1.观察题意,说是猫抓老鼠,catch!catch!catch!嘿嘿,不多说了,再说剧透了通过这句话判断是让我们来抓包,于是进入解题页面 2.通过一些列的提交和查询源代码,并没有发现什么问题,于是打开burp进行抓包测试 3.进入解题界面,打开抓包工具,随便输入一点字节或者数字,看burp返回信息 4.根据这个回显判断不…
其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostream> using namespace std; struct Node { int length; int price; }; int V, E; Node **G; void buildGraph(); void deleteGraph(); void dijkstra(int s, int d);…
其它pta数据结构编程题请参见:pta 题目 这道题考察最小生成树问题,用的是Prim算法. 和Dijkstra算法相比,没有了collect数组,因为dist[v] == 0就代表v被已收录. #include <iostream> using namespace std; int N, M; int** G; void buildGraph(); void deleteGraph(); int prim(); int findMinDist(int dist[]); int main()…
其它pta数据结构编程题请参见:pta 题目 和简单版本不同的是,简单版本只需判断能否到达岸边,而这个版本要求求出最少跳数的路径. 简单版本用dfs实现,而这道题用BFS实现. 注意: 岛半径为7.5,而不是15.另外注意一步跳到岸边的情况. #include <iostream> #include <vector> #include <math.h> using namespace std; ; int N, D; struct point { int x, y; }…
其它pta数据结构编程题请参见:pta 题目 主要用到了深度优先搜索. #include <iostream> using namespace std; struct Vertex { int x; int y; bool marked; }G[]; int N; //总鳄鱼数 int D; //可以跳的距离 bool dfs(Vertex& v); bool firstJump(Vertex v); bool jump(Vertex v1, Vertex v2); bool succ…
其它pta数据结构编程题请参见:pta 题目 题目要求分别以深度优先搜索和广度优先搜索输出图的连通集. 广度优先搜索要用到队列,先回顾一下循环队列: struct QNode { int* Data; /* 存储元素的数组 */ int Front, Rear; /* 队列的头.尾指针 */ int MaxSize; /* 队列最大容量 */ }; typedef struct QNode *Queue; Queue CreateQueue( int MaxSize ) { Queue Q =…
其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路: 1.构造哈夫曼树,并求出总代价COST,即各个字母的频数乘以编码长度的和. 2.对于题目给出的每一组编码,判断是否符合哈夫曼编码,即这组编码是否为前缀码,同时代价cost是否等于计算出的哈夫曼树的代价COST. 判断一组编码是否为前缀码的方法: 将这些编码逐个的添加到哈夫曼树中,对于每一个编码字…
其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量包含的节点数,然后在union时把小的树并到大的树上. 另外在find操作时可以用递归的方式使查找路径上的所有节点的父节点都改为根节点,以实现路径压缩,在后续查找过程中会更快. #include <iostream> #include <vector> using namespace…
其它pta数据结构编程题请参见:pta 这道题考察的是最小堆. 堆是一个完全二叉树,因此可用数组表示,一个下标为 i 的结点的父节点下标为 i / 2,子结点下标为 2i 和 2i + 1. 插入元素:先把元素放到数组的最后面,然后不断循环和父节点比较,如果小于父节点则交换. 数组的下标为0存放一个很小的值作为哨兵,当进行插入操作时,如果插入的元素需要放到下标为1的位置时,和下标为0的值比较时会大于这个很小的值,因而会停止. #include <iostream> #include <v…
其它pta数据结构编程题请参见:pta 这道题考察平衡二叉查找树的插入. 为了保证二叉查找树的平衡,当一个结点的左右子树的高度差大于1时就要进行调整. 分为以下四种情况: 插入新节点后,以及旋转之后,需要更新结点的高度. RL旋转可以通过右孩子的LL旋转,然后当前节点的RR旋转实现. 同理,LR旋转可以通过左孩子的RR旋转,然后当前节点的LL旋转实现. #include <iostream> using namespace std; typedef struct Node *Tree; str…
其它pta数据结构编程题请参见:pta 这次的作业考察的是树的遍历. 题目的输入通过栈的pop给出了树的中序遍历的顺序.根据push和pop的顺序构造树的方法为:定义一个变量father来确定父节点,如果父节点还没有pop,那么push操作就构造父节点的左子树,否则构造父节点的右子树:定义一个栈用来确定pop操作弹出的节点,将father赋值为pop的节点,并将此节点的flag值(用来标记已经pop过)标为1. #include <iostream> #include <string&g…
其它pta数据结构编程题请参见:pta 这次的编程作业要求从上到下,从左到右输出一棵树的叶子节点,即树的层序遍历,用队列的方式来实现. 注意enqueue和dequeue函数参数为Queue &q,而不是Queue q,即用引用的方式才能改变实参的值. #include <iostream> using namespace std; struct Node { int left; int right; }; struct Queue { ]; ; ; ; }; int buildTre…
其它pta数据结构编程题请参见:pta 题目请参见:树的同构 因题目中左右子树是按照下标给出,因此用数组存放树是更好的方法. 判断两棵树是否同构:用递归的方法.如果当前两个结点都为空,则返回TRUE:如果一个结点空一个不空,或者两个结点都不为空但是结点存储的数据不同,则返回FALSE.然后递归地的调用函数,判断是否左子树和左子树相同且右子树和右子树相同,或者左子树和左子树相同且右子树和右子树相同. #include <iostream> using namespace std; struct…
这道真的是好题,不卡精度,不卡细节,但是思考的方式很巧妙! 一开始大家跟我想的应该差不多,用f[i][j]表示有i只白老鼠,j只黑老鼠的胜率,然后跑DP,然后我就发现,这样怎么做?还有一种不胜不负的平手情况,这个是继承,还是不继承?如果f[w][b]继承了不胜不负的状态,而题意说的是如果两方都没有抓到白老鼠,算公主输,这样不就错了吗?? 膜了网上大牛的题解,答案是:继承! why?记住,f[i][j]表示的是当前胜的可能.首先当j=0的时候,公主必胜,这个继承没有问题:如果j>0,f会继承到前面…
题目链接: 就是一个老鼠在环上一速度v开始绕环走,一只猫从圆心出发,任意时刻圆心,猫,老鼠三者在一条直线上,且速度也是v,求多久后猫抓到老鼠. #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <iostream> #include <cmath> #include <vector> #define…
打开解题链接后,发现他是让我们输入key提交查询就能进行下一步 题目中提示了:catch(抓的意思) 那么我们很容易就能想到是BP抓包,抓包后直接放到repeater中改包. 我们先GO一下看看有什么,在下图中我们可以见到右边反回的有一串字符串,很像是base64,那么我们将它复制到左边的pass_key后面,然后再GO一次 现在他返回了一个不同的结果,这就是我们要找的flag,复制提交就可以啦~…
设dp[i][j]为有白老鼠i只,黑老鼠j只时轮到公主取时,公主赢的概率. 那么当i = 0 时,为0 当j = 0时,为1 公主可直接取出白老鼠一只赢的概率为i/(i+j) 公主取出了黑老鼠,龙必然也要取出黑老鼠公主才能赢,跑出来的老鼠有两种可能 跑出来的是黑老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3].(j>=3) 跑出来的是白老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(…
知识点:本次编程运用到的格式 #include<stdio.h> int main(void) { printf(); return 0; } 过程:1-3.没什么问题,就是注意字符的输入要正确. 4-6.格式上位置的错误,稍微调整一下就好了. 7.注意字符的输入,别输错,别输漏. 8.符号的间距不对,调整一下. 心得:编程的过程非常的严谨,所有的过程都息息相关,不能出 一点小错误,就连符号的间距也至关重要,不能粗心打少 打多,否则输出的结果不尽相同,所想要表达的结果也就 不一样了.…
看题目好像就有让我们抓包的意思. 不管输什么走势一个结果:Check Failed! 也用bp爆破了,但是出不来什么结果. 抓到包后,送到repeater中go一下,发现有一串base64码,以为解码后就是正确的输入数据,谁知道不用转换就行. 于是传递该base64编码,就拿到flag了.…
7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S.B.Q.W.Y分别代表拾.百.仟.万.亿.于是23108元应被转换输出为"cWdQbBai"元. 代码:#include<stdio.h> int main (void) { int n, value, value1,…
7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 代码:#include <stdio.h> int main() { int n; char c; sc…