#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int t;
scanf("%d",&t);
while(t--)
{
set<int>set;
int x,y,maxn=1;
scanf("%d%d",&x,&y);
for(int i=1; i<=x/2; ++i)
{
int a=i,b=x-i,c=y;
set.insert(a);
set.insert(b);
set.insert(c);
set.insert(a+b);
if(abs(a-b)!=0)set.insert(abs(a-b));
set.insert(a+c);
if(abs(a-c)!=0)set.insert(abs(a-c));
set.insert(b+c);
if(abs(b-c)!=0)set.insert(abs(b-c));
set.insert(a+b+c);
if(abs(a+b-c)!=0)set.insert(abs(a+b-c));
if(abs(a-b+c)!=0)set.insert(abs(a-b+c));
if(abs(a-b-c)!=0)set.insert(abs(a-b-c));
if(set.size()>maxn)maxn=set.size();
set.clear();
}
for(int i=1; i<=y/2; ++i)
{
int a=i,b=y-i,c=x;
set.insert(a);
set.insert(b);
set.insert(c);
set.insert(a+b);
if(abs(a-b)!=0)set.insert(abs(a-b));
set.insert(a+c);
if(abs(a-c)!=0)set.insert(abs(a-c));
set.insert(b+c);
if(abs(b-c)!=0)set.insert(abs(b-c));
set.insert(a+b+c);
if(abs(a+b-c)!=0)set.insert(abs(a+b-c));
if(abs(a-b+c)!=0)set.insert(abs(a-b+c));
if(abs(a-b-c)!=0)set.insert(abs(a-b-c));
if(set.size()>maxn)maxn=set.size();
set.clear();
}
printf("%d\n",maxn);
}
return 0;
}
B - Break Standard Weight ( Team Contest 1st)
最新推荐文章于 2021-12-18 14:48:30 发布
本文介绍了一个使用C++解决特定数学问题的程序。该程序通过读取两个整数x和y作为输入,利用循环和集合数据结构来找出由x和y组成的线性组合能产生的最大数量的不同整数。通过对每种可能的线性组合进行遍历并将其结果存储在集合中,程序确保所有元素都是唯一的,并最终输出能够得到的最大不重复整数的数量。
5万+

被折叠的 条评论
为什么被折叠?



