64,646
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <set>
#include <fstream>
using namespace std;
typedef pair<double,double> dd;
set<dd> hh;
void fun(int x0,int y0, int b, int a)
{
int count = 0;
for (int x=x0; x<b; ++x)
{
int y;
if(x==x0)
y=y0+1;
else
y=0;
double k,bb;
for (;y<a; ++y)
{
if(y != y0 && x != x0) //去掉处置坐标系的直线
{
k = (y-y0)*1.0/(x-x0);
if(k>0.0) //只计算斜率为正的直线
{
bb = y0-k*x0;
hh.insert(make_pair(k,bb));
}
}
}
}
}
int main()
{
int T;
while(cin>>T)
{
int a,b;
for(int i=0; i<T;++i)
{
cin>>a>>b;//a行,b列
hh.clear();
for (int x=0; x<b; ++x)
{
for (int y=0; y<a; ++y)
{
fun(x,y,b,a);//枚举
}
}
cout<<2*hh.size()+a+b<<endl;
}
}
return 0;
}