UvaOJ 10167 Birthday Cake

直接枚舉法


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;
					}
				}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章