题意:有一个半径100,圆形(0,0)的蛋糕,上面有很多樱桃,有一对双胞胎要平分蛋糕,并且平分上面的樱桃,问你切的那刀的直线的Ax+By = 0的A,B是多少范围都在[-500,500]
思路:因为范围在[-500,500],所以枚举A,B,统计在直线上面的和在直线下面的樱桃,把樱桃的坐标带入,如果>0说明在直线的上方,<0在直线的下方==0在直线上,题目说不能再直线上,所以=0的直接结束
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
struct Point
{
int x,y;
}p[205];
Point cherr[105];
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int A,B,f = 1;
if(n == 0)
break;
for(int i = 0; i < 2*n; i++)
{
scanf("%d%d",&cherr[i].x,&cherr[i].y);
}
for(A = -500 ; A <= 500; A++)
{
for(B = -500; B <= 500; B++)
{
int flag = 1,sum = 0;
for(int i = 0; i < 2*n&& flag; i++)
{
if(A*cherr[i].x + B *cherr[i].y == 0)
flag = 0;
else if(A*cherr[i].x + B *cherr[i].y > 0)
sum++;
}
if(sum == n && flag)
{
f = 0;printf("%d %d\n",A,B);
}
if(!f) break;
}
if(!f) break;
}
}
return 0;
}