結果
| 問題 | 
                            No.2766 Delicious Multiply Spice
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2024-05-31 22:14:20 | 
| 言語 | C++17  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                OLE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 728 bytes | 
| コンパイル時間 | 2,176 ms | 
| コンパイル使用メモリ | 197,628 KB | 
| 最終ジャッジ日時 | 2025-02-21 18:01:27 | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | OLE * 1 -- * 7 | 
| other | -- * 31 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
bool dfs(ll N, stack<char>& st) {
	if (N == 1) {
		return true;
	}
	int d = N % 6;
	int OK[] = {0, 1, 0, 1, 1, 0};
	if (!OK[d]) {
		return false;
	}
	if (d % 2 == 0) {
		ll n = (N - 1) / 3;
		st.push('B');
		if (dfs(n, st)) {
			return true;
		}
	} else if (d % 3 != 1) {
		ll n = (N - 1) / 2;
		st.push('A');
		if (dfs(n, st)) {
			return true;
		}
	} else {
		ll n1 = (N - 1) / 2;
		ll n2 = (N - 1) / 3;
		st.push('A');
		if (dfs(n1, st)) {
			return true;
		}
		st.pop();
		if (dfs(n2, st)) {
			return true;
		}
	}
	return false;
}
int main () {
	ll N;
	cin >> N;
	stack<char> st;
	dfs(N, st);
	while (!st.empty()) {
		cout << st.top();
	}
	cout << endl;
}