学习轨迹 4

【入门3】循环结构

P1009 [NOIP1998 普及组] 阶乘之和

高精度加法和乘法


P1980 [NOIP2013 普及组] 计数问题

 我的思路是找出每一个数的每一位并判断是否为x。

因此我参考了如何判断一个数的位数的代码:

int judge(int num)
{
	int count = 1;
	while (num / 10)
	{
		count++;
		num /= 10;
	}
	return count;
}

此代码是已经默认输入的数至少为一位数因此从两位数开始判断while(num / 10)

也就是说一位数是无法进入循环的,而我们在题中是需要在循环中判断一位数(是否为x),所以我进行了改进写出了第一版题解:

#include<bits/stdc++.h>
using namespace std;
int main()
{	
	int n,x,c=0;
	int t;
	cin >> n>>x;
	for (int i = 1; i <= n; i++)
	{
		t = i;
		while (i % 10 != 0||i/10)
		{
			if (i % 10 == x)
			{
				c++;
			}
			i /= 10;
		}
		i = t;
	}
	cout << c << endl;
}

即在循环条件中加入 i % 10 != 0 把一位数也纳入循环判断中。

但其实在这题中已经限定了n为正整数,因此循环条件为 i>0 即可 即第二版:

#include<bits/stdc++.h>
using namespace std;
int main()
{	
	int n,x,c=0;
	int t;
	cin >> n>>x;
	for (int i = 1; i <= n; i++)
	{
		t = i;
		while (i > 0)
		{
			if (i % 10 == x)
			{
				c++;
			}
			i /= 10;
		}
		i = t;
	}
	cout << c << endl;
}

此外又联想到:参考的代码能判断负数的位数,那么我的第一版题解能否解决n为负数的情况呢?尝试过后发现我这个思路的题解并不能解决n为负数的情况。

又联想到:如何将参考代码改成从一位数开始判断,解决如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int  num;
	cin >> num;
		int count = 0;
		while (num % 10 != 0 || num / 10)
		{
			count++;
			num /= 10;
		}
		cout<<count;
}

即也是在循环条件中加入 i % 10 != 0 把一位数也纳入循环判断中。


P5723【深基4.例13】质数口袋

 这题重点解决解决判断素数,方法之一:

在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数 

#include<stdio.h>
#include <math.h>
int main()
{
    int i,j,n;
    printf("Please input numbers: ");
    scanf("%d",&n);
    j=(int)sqrt(n);
    for(i=2;i<=j;i++)
    {
        if(n%i==0)
        {
            break;
        }
    }
    if(j<i)
      {
        printf("%d is prime!\n",n);
      }
    else
      {
        printf("%d is not prime!\n",n);
      }
     return 0;
}

有关CTF

题目类型

在CTF中主要包含以下5个大类的题目,有些比赛会根据自己的侧重点单独添加某个分类,例如`移动设备(Mobile)`, `电子取证(Forensics)`等,近年来也会出来混合类型的题目,例如在Web中存在一个二进制程序,需要选手先利用Web的漏洞获取到二进制程序,之后通过逆向或是Pwn等方式获得最终flag

### Web

Web类题目大部分情况下和网、Web、HTTP等相关技能有关。主要考察选手对于Web攻防的一些知识技巧。诸如`SQL注入`、`XSS`、`代码执行`、`代码审计`等等都是很常见的考点。一般情况下Web题目只会给出一个能够访问的URL。部分题目会给出附件

### Pwn

Pwn类题目重点考察选手对于`二进制漏洞的挖掘和利用`能力,其考点也通常在`堆栈溢出`、`格式化漏洞`、`UAF`、`Double Free`等常见二进制漏洞上。选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(`Exploit`),进而对主办方给出的远程服务器进行攻击并获取flag通常来说Pwn类题目给出的远程服务器信息为`nc IP_ADDRESS PORT`,例如`nc 1.2.3.4 4567`这种形式,表示在`1.2.3.4`这个IP的`4567`端口上运行了该题目

### Reverse

Re类题目考察选手`逆向工程`能力。题目会给出一个可执行二进制文件,有些时候也可能是Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等获得flag

### Crypto

Crypto类题目考察选手对`密码学`相关知识的了解程度,诸如`RSA`、`AES`、`DES`等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。

### Misc

Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag

常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。


【计算机网络】HTTP 协议详解 学习✔

 HTTP 协议的工作过程
  • 客户端: 主动发起网络请求的一端
  • 服务器: 被动接收网络请求的一端
  • 请求: 客户端给服务器发送的数据
  • 响应: 服务器给客户端返回的数据

HTTP 协议的重要特点: 一发一收,一问一答 

注意: 网络编程中,除了一发一收之外,还有其它的模式

  • 多发一收:例如上传大文件
  • 一发多收:例如看直播时,搜索一个词条可以得到多个视频源
  • 多发多收:例如串流(steam link、moonlight 等等)
HTTP 协议格式总览 

HTTP 请求格式: 

HTTP 响应格式: 

注意: 为什么 HTTP 报文中要存在空行呢? 

  • 因为 HTTP 协议并没有规定报头部分的键值对有多少个,使用空行就相当于是报文的结束标记或报文和正文之间的分隔符
  • HTTP 在传输层依赖 TCP 协议,TCP 是面向字节流的。如果没有这个空行,就会出现”粘包问题“ 

请求“报头”(header) 

 header 的整体格式是键值对结构,每个键值对占一行,键和值之间使用 冒号+空格 进行分割

Host

HOST 的值表示服务器主机的地址和端口(地址可以是域名,也可以是 IP;端口号可以省略或者手动指定)

Content-Length

Content-Length 表示 body 的数据长度,长度单位是字节

Content-Type

Content-Type 表示 body 的数据格式,以下介绍三种请求中的数据格式

User-Agent(简称 UA)

User-Agent 表示浏览器或者操作系统的属性

Referer

Referer 表示这个页面是从哪个页面跳转过来的,这是一个很有用的字段

Cookie 

Cookie 是浏览器提供的一种让程序员在本地存储数据的能力


状态码
200 OK

表示访问成功

404 Not Found

表示没有找到资源

(当你发送请求的 URL 在服务器中找不到该资源,就会出现 404)

403 Forbidden

表示访问被拒绝

(有的页面通常需要用户有一定的权限才能访问,如未登录)

405 Method Not Allowed

表示访问的服务器不能支持请求中的方法或者不能使用该请求中的方法

500 Internal Server Error

表示服务器出现内部错误

(一般是服务器的代码执行过程中遇到了一些特殊的情况,造成服务器崩溃可能会产生这个状态码)

504 Gateway Timeout

表示当前服务器负载比较大,服务器处理单条请求的时耗很长,就会出现超时情况

302 Move temporarily

表示临时重定向

(重定向相当于手机呼号的呼叫转移功能,如果我们换了一个手机号,就可以去办理该呼叫转移业务,使朋友拨打你的旧号码时,自动跳转到新号码)

301 Moved Permanently

表示永久重定向,当浏览器收到这种响应时,后续的请求都会被自动改成新的地址

 


通过 form 表单构造 HTTP 请求

深度强化学习轨迹跟踪是一种基于深度确定性策略梯度算法(DDPG)的控制方法,用于实现船舶的航迹跟踪控制。在这种方法中,船舶的航向被控制以实现所需的航迹跟踪效果。这个方法将船舶路径跟踪问题建模成马尔可夫决策过程,并设计相应的状态空间、动作空间与奖励函数。通过离线学习方法对控制器进行训练,使用深度强化学习算法来优化控制器的性能。 深度强化学习轨迹跟踪控制器的有效性可以通过仿真实验来验证。在实验中,可以比较该控制器算法与其他控制器算法(如BP-PID控制器算法)的控制效果,并进行对比分析。通过对仿真结果的评估,可以评估深度强化学习轨迹跟踪控制器的性能和优势。 总之,深度强化学习轨迹跟踪是一种利用深度强化学习算法实现船舶航迹跟踪的控制方法,通过对控制器进行训练和优化,可以实现精准的航迹跟踪效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [基于深度强化学习的智能船舶航迹跟踪控制](https://blog.csdn.net/m0_62870606/article/details/121396543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [深度学习目标跟踪相关细节-毕设](https://blog.csdn.net/purple_love/article/details/127031391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值