题:原文网址:http://vjudge.net/problem/viewProblem.action?id=19398
输入:先输入一个数N,后每组2个(代表x,y)输入N组数。(1<=N<=50)(-100<=x,y<=100)输入0结束。
输出:A,B使得Ax+By!=0,且Ax+By>0的数目与Ax+By<0的数目相同(-500<=A,B<=500)
如:
Sample Input
2
-20 20
-30 20
-10 -50
10 -5
0
Sample Output
0 1
我的代码:
#include<stdio.h>
#define MAXN 50+10
int main()
{
int x[MAXN],y[MAXN],n;
do
{
scanf("%d",&n);
if(n==0)break;
int i,j,k;
for(i=0;i<2*n;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=-500;i<=500;i++)
{
for(j=-500;j<=500;j++)
{
int ca=0,cb=0,ok=1;
for(k=0;k<2*n;k++)
{
if(x[k]*i+y[k]*j==0){ok=0;break;}
else if(x[k]*i+y[k]*j>0)ca++;
else cb++;
}
if(ok && ca==cb){printf("%d %d\n",i,j);goto lp;}
}
}
lp:;
}while(n);
return 0;
}