日常遇到题——硬币问题

问题描述:
某个国家的货币包括四种硬币:1元,4元,16元,64元。还有面值1024元的纸币。
现在小明使用1024的纸币买了一件价格为n(0 < n <= 1024)的商品,求找零的时候最少找给他多少个硬币。
解题思路:
这道题可以用贪心算法来求解,就是先求64的硬币个数,再求16元的硬币个数。。。
但是我们发现,这道题的硬币面值是有规律的,是4的幂,所以可以用一种更简单的方法来求解。直接看代码。
代码:

int main(){
	int res = 0;
	int n;
	cin >> n;
	n = 1024 - n;
	res += n % 4;
	n /= 4; 
	res += n % 4;
	n /= 4; 
	res += n % 4;
	n /= 4; 
	res += n;
	cout << res;
	return 0;
}

你可能感兴趣的:(LeetCode)