📄 2129.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 2129 on 2005-10-21 at 16:30:47 */
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int MAX = 63;
long long f[MAX] = {1};
int find(long long, long long);
int main()
{
long long m, x, y;
long long j, k;
int h, w;
int n, i;
for(i = 1; i < MAX; i++) {
f[i] = f[i-1] * 2;
}
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%lld %lld %lld %d %d", &m, &x, &y, &w, &h);
for(j = y; j < h + y; j++) {
for(k = x; k < w + x; k++) {
if(k != x) {
putchar(' ');
}
printf("%d", find(k, j));
}
putchar('\n');
}
putchar('\n');
}
return 0;
}
int find(long long n, long long m)
{
if(n == 0 || m == 0) {
return 1;
} else {
long long *X = upper_bound(f, f+MAX, n);
long long *Y = upper_bound(f, f+MAX, m);
long long maxi = max(*X, *Y) / 2;
int s = 1;
if(n >= maxi && m >= maxi) {
s = -1;
}
if(n >= maxi) {
n -= maxi;
}
if(m >= maxi) {
m -= maxi;
}
return s*find(n, m);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -