telankesi @ 2022-12-14 21:28:17
#include <stdio.h>
long long k, x, y;
long long t = 1;
void fun(long long x, long long y, long long len, long long a, long long b);
int main()
{
scanf("%lld", &k);
scanf("%lld %lld", &x, &y);
while (k!=0) {
t *= 2;
k--;
}
fun(x, y, t, 1, 1);
return 0;
}
void fun(long long x, long long y, long long len, long long a, long long b) {
if (len == 1) return;
if (x < a + len / 2 && y < b + len / 2) {
printf("%lld %lld 1\n", a + len / 2 , b + len / 2 );
fun(x ,y , len / 2, a, b);
fun(a + len / 2-1 , b + len / 2 , len / 2, a, b+len/2);
fun(a + len / 2 , b + len / 2 -1, len / 2, a+len/2, b);
fun(a + len / 2 , b + len / 2 , len / 2, a+len/2, b+len/2);
}
else if (x < a + len / 2 && y >= b + len / 2) {
printf("%lld %lld 2\n", a + len / 2 , b + len / 2 - 1);
fun(a+len/2-1, b+len/2-1, len / 2, a, b);
fun(x, y, len / 2, a, b + len / 2);
fun(a + len / 2, b + len / 2 - 1, len / 2, a + len / 2, b);
fun(a + len / 2, b + len / 2, len / 2, a + len / 2, b + len / 2);
}
else if (x >= a + len / 2 && y < b + len / 2) {
printf("%lld %lld 3\n", a + len / 2 - 1, b + len / 2 );
fun(a + len / 2 - 1, b + len / 2 - 1, len / 2, a, b);
fun(a+len/2-1, y+len/2, len / 2, a, b + len / 2);
fun(x , y, len / 2, a + len / 2, b);
fun(a + len / 2, b + len / 2, len / 2, a + len / 2, b + len / 2);
}
else if (x >= a + len / 2 && y >= b + len / 2) {
printf("%lld %lld 4\n", a + len / 2 -1, b + len / 2-1 );
fun(a + len / 2 - 1, b + len / 2 - 1, len / 2, a, b);
fun(a + len / 2 - 1, y + len / 2, len / 2, a, b + len / 2);
fun(a + len / 2, b + len / 2 - 1, len / 2, a + len / 2, b);
fun(x, y, len / 2, a + len / 2, b + len / 2);
}
}
by saikrilll @ 2023-02-05 21:25:15
我也不知道呀,可能太长了
by blsya23a2 @ 2023-07-18 16:25:44
《太长了》