結果
| 問題 |
No.1797 永遠のグリッド
|
| ユーザー |
|
| 提出日時 | 2022-08-17 21:21:37 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 222 ms / 2,000 ms |
| コード長 | 1,202 bytes |
| コンパイル時間 | 2,682 ms |
| コンパイル使用メモリ | 207,240 KB |
| 最終ジャッジ日時 | 2025-01-30 23:32:12 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
typedef long long ll;
typedef long double ld;
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ll h,w,k;
std::cin >> h>>w>>k;
set<string> se;
ll ans = 0;
function<void(string)> dfs = [&](string s){
if(s.size()<h*w){
for (int i = 0; i < k; i++) {
dfs(s+(string){(char)(i+'0')});
}
}else{
set<char> uni;
for (auto e : s) {
uni.insert(e);
}
if(uni.size()!=k)return;
bool ok = true;
string tmp = s;
for (int i = 0; i <= h-1; i++) {
for (int j = 0; j <= w-1; j++) {
for (int ii = 0; ii < h; ii++) {
for (int jj = 0; jj < w; jj++) {
tmp[(ii+i)%h*w+(jj+j)%w] = s[ii*w+jj];
}
}
if(se.find(tmp)!=se.end())ok=false;
}
}
if(ok){
// std::cout << s << std::endl;
se.insert(s);
ans++;
}
}
};
dfs("");
std::cout << ans << std::endl;
}