目录
牛客_有假币(贪心)
解析代码
平均分三份是最快的方法,两份进行称重(对比出三个的重量 ),后对最重的那份再次进行称重,直到称重 的个数不足2个时则结束,获得假币如果无法平均分3分则余数要么是1要么是2,因为是要最多称几次,n=n/3+1 满足每次取最大分称3份,取两份一样多的过秤,然后把三份中最多的那份继续分,直到硬币剩余0或1时截止。
#include <iostream>
using namespace std;
int main()
{
long long n = 0, cnt = 0;
while (cin >> n)
{
if (n == 0)
break;
cnt = 0;
while (n >= 2)
{
if (n % 3 != 0) // 不可以整除则取最差情况
n = n / 3 + 1;
else // 可以整除在直接整除
n /= 3;
cnt++;
}
cout << cnt << endl;
};
return 0;
}