题解
题意:2x * y的矩阵a可以是由x * y的矩阵b不停地镜像对称得到,问b的x最小是多少
n为奇数的时候显然不能再缩小,
n为偶数的时候可以暴力判断一遍,这样最多判断log2(n)遍
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + 10;
int a[N][N];
int n, m, k;
int main() {
ios::sync_with_stdio(0);
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> a[i][j];
}
}
if (n % 2) return printf("%d", n), 0;
k = n;
while (k) {
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= k / 2; ++j) {
if (a[j][i] != a[k - j + 1][i]) {
return printf("%d", k), 0;
}
}
}
k /= 2;
if (k % 2)break;
}
printf("%d",k);
return 0;
}