题目链接<-请点击
题目
A.不等式
将不等式的边界值存起来,然后依次进行判断即可。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 200 + 10;
typedef long long LL;
int a[maxn], b[maxn];
string op[maxn];
int main()
{
int n;
scanf("%d",&n);
string x;
for(int i = 1; i <= n; i++)
{
cin >> x;
cin >> op[i];
scanf("%d", &a[i]);
//cout << x << op[i] << a[i] << endl;
if(op[i] == "<") b[i] = a[i] - 1;
else if(op[i] == ">") b[i] = a[i] + 1;
else b[i] = a[i];
}
int ans = 0;
for(int i = 1; i <= n; i++)
{
int res = 0;
for(int j = 1; j <= n; j++)
{
if(op[j] == "=" && b[i] == a[j]) res ++;
else if(op[j] == "<" && b[i] < a[j]) res ++;
else if(op[j] == ">" && b[i] > a[j]) res ++;
else if(op[j] == "<=" && b[i] <= a[j]) res++;
else if(op[j] == ">=" && b[i] >= a[j]) res++;
}
ans = max(ans, res);
}
printf("%d\n",ans);
return 0;
}
B. 1 的个数最多的整数
首先将a,b 都化为二进制形式,然后对于a的二进制形式从低位向高位进行遍历,如果该位为0则考虑变为1后是否会大于b,不会大于