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