第一次线上赛

2023.10.6

1.复数乘法

描述:复数运算是高中数学里的一个基本知识,现在有两个复数,分别是a+bi和c+di,求这两个复数相乘后的乘积,实部和虚部分别是多少?

输入:4个整数a、b、c、d,表示第一个复数的实部、虚部,第二个复数的实部、虚部。

输出:两个整数,表示复数乘积的实部和虚部。中间间隔一个空格,不要换行。

# include <iostream>
using namespace std;
int main()
{
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	cout << (a * c - b * d)<<" "<< (b * c + a * d);
	return 0;
}

​

 2.计算机三原色

描述:

计算机的颜色由红、绿、蓝三种颜色组成,三种颜色的深浅分别用一个0到255之间的整数表示,0表示完全没有,255表示最深的颜色。例如一种颜色,如果红色的值为200,绿色的值为50,蓝色的值为30,整体就会呈现偏红的颜色,因为红色的值比其他两种颜色的值都大。

现在用一种比较简单粗略的方式来描述颜色:

如果红色是唯一最大的值(即不存在两种或三种颜色并列最大),那么称该颜色就是红色(red);

如果绿色是唯一最大的值,那么称该颜色是绿色(green);

如果蓝色是唯一最大的值,那么称该颜色是蓝色(blue);

如果仅红色和绿色并列最大,那么称该颜色是黄色(yellow);

如果仅红色和蓝色并列最大,那么称该颜色是紫色(purple);

如果仅蓝色和绿色并列最大,那么称该颜色是青色(cyan);

如果红色、绿色、蓝色并列最大,那么要分三种情况:如果该最值大于等于200,则称为白色(white),如果该值小于等于50,则称为黑色(black),否则称为灰色(grey)

输入:三个整数r、g、b,表示三原色中红色、绿色、蓝色的值(均在0到255之间)

输出:输出一个英文单词,是颜色对应的英文单词,不要换行。

#include<iostream>
using namespace std;
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
		if (a > b && a > c)
		{
			cout << "red";
		}
		else if (b > a && b > c)
		{
			cout << "green";
		}
		else if (c > a && c > b)
		{
			cout << "blue";
		}
		else if (a == b && a > c && b > c)
		{
			cout << "yellow";
		}
		else if (a == c && a > b && c > b)
		{
			cout << "purple";
		}
		else if (b == c && b > a && c > a)
		{
			cout << "cyan";
		}
		else if (a == b && b == c && a == c && a >= 200)
		{
			cout << "white";
		}
		else if (a == b && b == c && a == c && a <= 50)
		{
			cout << "black";
		}
		else if (a == b && b == c && a == c && a > 50 && a < 200)
		{
			cout << "grey";
		}
	return 0;
}

3.月份的天数

输入:三个正整数y、m、d,表示一个合法的日期y年m月d日

输出:三个整数,表示从该日期开始,连续三个月每个月的天数(包括该日期所在的月份)。每两个数之间有一个空格,最后不要换行。

#include<iostream>
using namespace std;
int main()
{
	int y, m, d;
	cin >> y >> m >> d;
	if (y % 4 == 0 && m == 1 && y % 100 != 0 || y % 400 == 0 && m == 1)
	{
		cout << "31 29 31";
	}
	else if (y % 4 != 0 && m == 1|| y % 400 != 0 && m == 1)
	{
		cout << "31 28 31";
	}
	else if (y % 4 == 0 && m == 2 && y % 100 != 0 || y % 400 == 0 && m == 2 )
	{
		cout << "29 31 30";
	}
	else if (y % 4 != 0 && m == 2 || y % 400 != 0 && m == 2)
	{
		cout << "28 31 30";
	}
	else if (m == 3||m==5||m==8||m==10)
	{
		cout << "31 30 31";
	}
	else if (m == 4||m==9)
	{
		cout << "30 31 30";
	}
	else if (m == 6||m==11)
	{
		cout << "30 31 31";
	}
	else if (m == 7)
	{
		cout << "31 31 30";
	}
	else if ((y + 1) % 4 == 0 && m == 12 && (y + 1) % 100 != 0 || (y + 1) % 400 == 0 && m == 12)
	{
		cout << "31 31 29";
	}
	else if ((y + 1) % 4 != 0 && m == 12 || (y + 1) % 400 != 0 && m == 12)
	{
		cout << "31 31 28";
	}
	return 0;
}

4.比日期

描述:比较两个日期,如果第一个日期比第二个日期更早,则输出Early;如果第一个日期比第二个日期更晚,则输出Late;如果两个日期是同一天,则输出Same。

输入:

第一行有三个整数y1、m1、d1,表示第一个日期的年月日。

第二行有三个整数y2、m2、d2,表示第二个日期的年月日。

保证日期都是合法的。

输出:

如果第一个日期比第二个日期更早,则输出Early;

如果第一个日期比第二个日期更晚,则输出Late;

如果两个日期是同一天,则输出Same。

不要换行。

#include<iostream>
using namespace std;
int main()
{
	int y1, m1, d1;
	int y2, m2, d2;
	cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
	if (y1 > y2)
	{
		cout << "Late";
	}
	else if (y1 < y2)
	{
		cout << "Early";
	}
	else if (y1 == y2 && m1 < m2)
	{
		cout << "Early";
	}
	else if (y1 == y2 && m1 > m2)
	{
		cout << "Late";
	}
	else if (y1 == y2 && m1 == m2 && d1 < d2)
	{
		cout << "Early";
	}
	else if (y1 == y2 && m1 == m2 && d1 > d2)
	{
		cout << "Late";
	}
	else if (y1 == y2 && m1 == m2 && d1 == d2)
	{
		cout << "Same";
	}
	return 0;
}

5.鸡兔同笼

描述:笼子里关着三种奇怪的生物,每种生物至少会有一只。其中第一种生物每只有a1个头、b1只手、c1条腿,第二种生物每只有a2个头、b2只手、c2条腿,第三种生物每只有a3个头、b3只手、c3条腿。笼子里的所有的头有a个,手有b只,腿有c条。

已知题目有唯一一组解,求该解。

输入:

第1行是a1、b1、c1的值(均为不大于10的正整数),

第2行是a2、b2、c2的值(均为不大于10的正整数),

第3行是a3、b3、c3的值(均为不大于10的正整数),

第4行是a、b、c的值(均为不大于1000的正整数)

输出:输出3个正整数,表示第一种生物的数量、第二种生物的数量、第三种生物的数量,两个数中间用空格间隔,不要换行。

#include<iostream>
using namespace std;
int main()
{
    int a1, b1, c1, a2, b2, c2, a3, b3, c3, a, b, c;
    cin >> a1 >> b1 >> c1;
    cin >> a2 >> b2 >> c2;
    cin >> a3 >> b3 >> c3;
    cin >> a >> b >> c;
    int i, j, k;
    for (i = 1; i <= a / a1; i++)
        for (j = 1; j <= b / b2; j++)
            for (k = 1; k <= c / c3; k++)
                if (i * a1 + j * a2 + k * a3 == a && i * c1 + j * c2 + k * c3 == c && i * b1 + j * b2 + k * b3 == b)
                    cout<< i<<" "<< j<<" "<< k;
    return 0;
}

6.数的乘积

描述:有4个整数,问是否能从中挑选出两个数,使得这两个数的乘积是负数?

输入:4个整数

输出:如果能找到两个数的乘积是负数,则输出Yes,否则输出No。不要换行。

#include<iostream>
using namespace std;
int main()
{
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	if (a * b < 0 || a * c < 0 || a * d < 0 || b * c < 0 || b * d < 0 || c * d < 0)
	{
		cout << "Yes";
	}
	else
	{
		cout << "No";
	}
	return 0;
}

或者

#include<iostream>
using namespace std;
int main()
{
	int a, neg = 0, pos = 0;
	for (int i = 0; i < 4; i++)
	{
		cin >> a;
		if (a > 0)pos++;
		else if (a < 0)neg++;
	}
	if (pos >= 1 && neg >= 1)
	{
		cout << "Yes";
	}
	else
	{
		cout << "No";
	}
	return 0;
}

<think>嗯,用户想查找强网杯线往年的题。根据引用[1]的内容,强网杯是国内顶级网络安全事,已经成功举办了多届,包含线线两种形式。线通常会吸引众多队伍参与,经过激烈角逐选拔出晋级线的队伍。 用户可能正在准备参或者学习网络安全技术,需要往年题来练习或研究。考虑到CTF比题通常涉及二进制漏洞、Web漏洞、密码学等方向,应该提供多种获取渠道。 引用[2]提到了"第七届强网杯"的具体题目"谍影重重2.0",引用[3]则展示了"2020第四届强网杯"Crypto题目的解法片段。这说明往年题确实存在公开资源。 建议用户从几个主要渠道着手:首先是官方渠道如事官网和GitHub仓库,其次是CTF社区和开源平台。还要提醒用户注意题目年份和分类,因为不同届次的题目难度和侧重点可能不同。 用户可能需要具体的搜索关键词示例,比如加上"writeup"可以找到带解析的题目。另外,地方性的强网杯事题目也可以作为补充练习材料。 考虑到网络安全竞的特殊性,应该提醒用户实践时注意法律边界。这类事题目往往包含真实漏洞利用,必须在合法授权环境下操作。 </think>以下是查找“强网杯”往年线题的途径和建议: --- ### **一、官方渠道** 1. **事官网** 访问[强网杯官方网站](https://www.qiangwangbei.com/)(若存在),通常在“往届回顾”或“资源下载”栏目会公开部分题。 *注意:部分早期事资源可能未完全保留。* 2. **主办方GitHub** 主办单位(如信息工程大学)可能开源题: ```url https://github.com/geekpie2020 // 安全+创新竞公开题仓库(含强网杯) ``` 搜索关键词:`强网杯`、`QiangWangBei`、`CTF`。 --- ### **二、CTF社区与平台** 1. **CTFHub** 收录多届强网杯题及解析: ```url https://www.ctfhub.com/#/challenge?event=强网杯 ``` 2. **攻防世界(ADWorld)** 提供在线挑战环境: ```url https://adworld.xctf.org.cn/challenges?search=强网杯 ``` 3. **CTFWriteups 合集** 选手后常发布解题报告: ```url https://github.com/ctfs/write-ups/tree/master/qiangwangbei ``` --- ### **三、开源情报(OSINT)** 1. **GitHub 搜索** 使用关键词组合: ```搜索语法 "强网杯" AND ("题" OR "Writeup" OR "题目") ``` 2. **网盘资源** 部分团队会整理题包(示例): ```url 百度网盘搜索:强网杯 题合集 ``` --- ### **四、注意事项** 1. **题分类** 按引用[1]描述,题目通常覆盖: - Web漏洞利用(如SSTI、反序列化) - 二进制逆向(ARM/IoT固件分析) - 密码学(如引用[3]的Oracle攻击) - 流量分析(如引用[2]的Wireshark取证) 2. **年份对应** - **第七届(2023)**:谍影重重2.0(流量分析)[^2] - **第四届(2020)**:RSA末位Oracle攻击[^3] - **第八届(2024)**:关注AI安全等新兴领域[^1] --- ### **
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值