20240327每日一题题解
Problem
一些整数可能拥有以下的性质:
- 性质 1:是偶数;
- 性质 2:大于 \(4\) 且不大于 \(12\)。
小 A 喜欢这两个性质同时成立的整数;
Uim 喜欢这至少符合其中一种性质的整数;
小 B 喜欢刚好有符合其中一个性质的整数;
正妹喜欢不符合这两个性质的整数。现在给出一个整数 \(x\),请问他们是否喜欢这个整数?
输入一个整数 \(x(0\le x \le 1000)\),输出这 \(4\) 个人是否喜欢这个数字,如果喜欢则输出 1
,否则输出 0
,用空格分隔。输出顺序为:小 A、Uim、小 B、正妹。
例如输入12
,应输出1 1 0 0
.
Solution
判断一个数是否为偶数,可以计算其除以2所得的余数是否等于0:x%2==0
。
判断一个数是否大于4且不大于12,即\(4<x\le12\),可写成表达式4<x && x<=12
。注意不能写成4<x<=12
。
将两个表达式的值记作ans1,ans2
,
小A喜欢两个性质同时成立的:ans1 && ans2
Uim 喜欢至少符合其中一种性质的:ans1 || ans2
小 B 喜欢刚好符合其中一种性质的: (!ans1 && ans2)||(ans1 && !ans2)
或者简单的写成 ans1!=ans2
,甚至再简单点就是ans1^ans2
正妹喜欢不符合两个性质的:(!ans1) && (!ans2)
等价于!(ans1 || ans2)
Code
#include<iostream>
using namespace std;
int main()
{
int x;
cin>>x;
bool ans1,ans2;
ans1=(x%2==0);//也可以 if(x%2==0) ans1=1;else ans1=0;
ans2=(x>4&&x<=12);
bool xiaoA=(ans1&&ans2),Uim=(ans1||ans2),xiaoB=(ans1!=ans2),Zhengmei=!(ans1||ans2);
cout<<xiaoA<<" "<<Uim<<" "<<xiaoB<<" "<<Zhengmei<<endl;
return 0;
}
如果你还不太懂bool
和逻辑表达式的关系,可以看看下面的:
#include<iostream>
using namespace std;
int main()
{
int x;
cin>>x;
bool ans1,ans2;
if(x%2==0)//ans1=(x%2==0);
{
ans1=1;
}
else
{
ans1=0;
}
if(x>4&&x<=12)//ans2=(x>4&&x<=12);
{
ans2=1;
}
else
{
ans2=0;
}
bool xiaoA,Uim,xiaoB,Zhengmei;
if(ans1&&ans2)//xiaoA=(ans1&&ans2)
{
xiaoA=1;
}
else
{
xiaoA=0;
}
if(ans1||ans2)//Uim=(ans1||ans2)
{
Uim=1;
}
else
{
Uim=0;
}
if(ans1!=ans2)//xiaoB=(ans1!=ans2)
{
xiaoB=1;
}
else
{
xiaoB=0;
}
if(!(ans1||ans2))//Zhengmei=!(ans1||ans2)
{
Zhengmei=1;
}
else
{
Zhengmei=0;
}
cout<<xiaoA<<" "<<Uim<<" "<<xiaoB<<" "<<Zhengmei<<endl;
return 0;
}
标签:题解,每日,整数,喜欢,&&,ans1,20240327,ans2,性质
From: https://www.cnblogs.com/Vanilla-chan/p/18098407