ABC 068 B - Break Number 全探索の考え方。発想

全探索の考えかたが重要。考察問題。
整数操作も大事。

6 -> 1回 (6>3)
8 -> 3回 (8 > 4 > 2 > 1)

これらは、1からNまででループを回す考え方で解いてはいけない。
1から2倍していって、最大値がN以下の整数が答えである。

コード

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
const int INF = 1e9;

int main() {
	int N; cin >> N;
	int num = 1;
	while (1) {
		if (num * 2 > N) break;
		num *= 2;
	}

	cout << num;
}

ABC 031 D - 語呂合わせ bit全探索 3進数

10進数から3進数に直すコードは以下の通りである

for (int bit = 0; bit < pow(3, k); bit++) {
		int tmp = 0;
		for (int i = 1; i <= k; i++) {//数字1からkまで
			len[i] = tmp % 3 + 1;
			tmp /= 3;
		}
	}

例として28なら、len={2,1,1,2,1,1} (1 + 27) と保存される。

未解決。