数学的な問題。
問題概要
正の整数 が与えられる。0 以上の整数
であって、
となるものが存在するかどうかを判定せよ。
制約
考えたこと
問題を解くときに、条件をわかりやすく言い換えていくことはとても大事!
今回は次のように考えるとわかりやすい。 を 2 で割れるだけ割って、3 で割れるだけ割って、1 になれば Yes と考えるのだ。たとえば
のとき、2, 3 で割れるだけ割ると
になるので Yes
のとき、2, 3 で割れるだけ割っても
が残るので No
というようになる。
コード
while
文を使うと実装しやすい。
#include <bits/stdc++.h> using namespace std; int main() { long long N; cin >> N; while (N % 2 == 0) N /= 2; while (N % 3 == 0) N /= 3; if (N == 1) cout << "Yes" << endl; else cout << "No" << endl; }