【HDOJ】1466 计算直线的交点数

时间:2023-03-10 02:07:44
【HDOJ】1466 计算直线的交点数

找了个规律。

 #include <stdio.h>
#include <stdlib.h>
#include <string.h> #define MAXN 21 int buf[MAXN][];
int lens[MAXN]; int comp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
} int main() {
int i, j, k, tmp, p, flg;
memset(lens, , sizeof(lens));
memset(buf, , sizeof(buf));
lens[] = ;
lens[] = ;
lens[] = ;
buf[][] = ; for (i=; i<MAXN; ++i) {
lens[i] = ;
for (j=; j<i; ++j) {
for (k=; k<lens[j]; ++k) {
tmp = (i-j)*j+buf[j][k];
flg = ;
for (p=lens[i]-; p>=; --p) {
if (buf[i][p] == tmp) {
flg = ;
break;
}
}
if (flg)
buf[i][lens[i]++] = tmp;
}
}
qsort(buf[i], lens[i], sizeof(int), comp);
} while (scanf("%d", &k) != EOF) {
printf("%d", buf[k][]);
for (i=; i<lens[k]; ++i) {
if (buf[k][i] != buf[k][i-])
printf(" %d", buf[k][i]);
}
printf("\n");
} return ;
}