编程题——有假币


编程题——有假币


题目描述:
居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。


程序代码如下:



#include 
using namespace std;

/*举几个例子就能想到最快的方法是分成三份:
 *比较其中的两份,如果不相等则假币在轻的那份,如果相等则假币在第三份,直接n%3
 *接下来考虑不能均分的情况:
 *因为是分3份,所以只可能多余1或两个
 *我们考虑最差的情况,假币在最多的一份里,最多的那份为n%3+1
*/

int main()
{
	int n;
	while (cin >> n)
	{
		if (0 == n)
			break;
		int count = 0;
		while (n >= 2)
		{
			if (n % 3)
				n = n / 3 + 1;
			else
				n = n / 3;
			++count;
		}
		cout << count << endl;
	}
	return 0;
}


程序运行结果如下:


编程题——有假币_第1张图片

你可能感兴趣的:(算法)