js算法(一)字节笔试的一个硬币问题
从网上看的一个字节算法问题
题目描述
Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为
N(0<N ≤1024)的商品,请问最少他会收到多少硬币?
输入描述:
一行,包含一个数N。
输出描述:
一行,包含一个数,表示最少收到的硬币数。
示例1输入输出示例仅供调试,后台判题数据一般不包含示例
输入
200
输出
17
hftns-lhlnru nsrln ratlrrm
https://www.csdn.net/tags/MtTaEgysODI5NjUwLWJsb2cO0O0O.html
这里他原文用的是递归
而我用了一个for循环的四层嵌套
代码如下
var N=window.prompt("N") function getNumber(){ var x=1 var y=1 var z=1 var q=1 var arr=[] var num1=parseInt(1024-N) var num2=parseInt(256-0.25*N) var num3=parseInt(64-0.0625*N) var num4=parseInt(16-0.015625*N) var total=parseInt(1024-N) for(x=0;x<=num1;x++){ for(y=0;y<=num2;y++){ for(z=0;z<=num3;z++){ for(q=0;q<=num4;q++){ var num=x+4*y+16*z+64*q if(parseInt(1024-N)===(num)){ if(total>x+y+z+q){ total=x+y+z+q } } } } } } console.log(total) } getNumber()