1.取模+交互题 Chocolate Bunny
思路:
#include <stdio.h>
int a[10001];
main()
{
register int n;
scanf("%d", &n);
for (register int i = 1, x, y; i <= n; ++i)
if (!a[i])
for (register int j = 1; j <= n; ++j)
if (!a[j] && i != j) // 不浪费询问次数,只询问不确定值的a[i]和a[j];i=j肯定不能询问
{
printf("? %d %d\n? %d %d\n", i, j, j, i);
fflush(stdout);
scanf("%d%d", &x, &y);
if (x < y)
a[j] = y;
else
{
a[i] = x;
break;
}
}
printf("! ");
for (register int i = 1; i <= n; ++i)
if (a[i])
printf("%d ", a[i]);
else
printf("%d ", n); // 一个奇怪的地方,在下面解释
fflush(stdout);
}