AOJ2330
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2330
既視感ある問題。偽物の金貨を探すのが有名な気がする。
解法:O(logN)
要素数が等しい(もしくは差が1以下の)3個の集合に分けて2つを天秤にかける操作を繰り返すことで求まるので
N<=3^nとなる最小のnを探して終わり
#include <iostream> #include <cmath> using namespace std; int main(){ int n; cin >> n; int r=0; while(pow(3,r)<n)r++; cout << r << endl; return 0; }