第一次线上赛

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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值