配置の仕方が、nCk = n-1Ck-1 + n-1Ck を何となく連想させる。
描画してみる。向きと幅がアレだけど、nCk mod 2 のフラクタルに見える。しかし、値の範囲が大きすぎる。
どうやら、nCkが奇数であることと(~n&k)==0は同値らしい。
class CheckerExpansion { public: vector <string> resultAfter(lli t, lli x0, lli y0, int w, int h) { vector<string> ret; for (lli i = y0; i < y0 + h; ++i) { string s; for (lli j = x0; j < x0 + w; ++j) { bool hata = true; lli k = i; lli n = (i + j) / 2LL; hata = hata && !(~n & k); hata = hata && ((i + j) % 2 == 0); hata = hata && (n < t); if (hata) s += (n % 2) ? 'B' : 'A'; else s += '.'; } ret.push_back(s); } reverse(ret.begin(), ret.end()); return ret; } };