直接枚舉法
RE了幾次,原因是用了goto語句,也許Uva不支持goto?
對所有可行解只輸出一個即可。。。Uva評測還挺高級的。
#include <stdio.h>
#define N 110
int gcd(int a, int b) {
int r;
if (a < b)
r = a, a = b, b = r;
r = a % b;
while(r)
a = b, b = r, r = a % b;
return b;
}
int main() {
int x[N], y[N], n, i, j, k;
while (scanf("%d", &n) != EOF && n) {
for (i=0 ; i<n<<1 ; i++)
scanf("%d%d", x+i, y+i);
for (i=-500 ; i<=500 ; i++)
for (j=-500 ; j<=500 ; j++)
if (gcd(i, j) == 1) {
int cnt = 0;
for (k=0 ; k<n<<1 ; k++)
if (i*x[k] + j*y[k] == 0) {
cnt = 0;
break;
}
else if (i*x[k] + j*y[k] > 0)
cnt++;
if (cnt == n) {
printf("%d %d\n", i, j);
i = 501;
break;
}
}
}
}