字节跳动笔试真题-硬币找零,算是入门级难道,大家直接看代码,一眼就懂。
题目描述:
Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N(0<N≤1024)N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?
输入描述: 一行,包含一个数N。
输出描述: 一行,包含一个数,表示最少收到的硬币数。
示例1
输入:200
输出:17
说明
花200,需要找零824块,找12个64元硬币,3个16元硬币,2个4元硬币即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scaner = new Scanner(System.in);
int n =scaner.nextInt();
charge(n);
}
public static void charge(int n){
int n1= 1024 - n;
int[] re = {0,0,0,0};
while(n1 > 0){
if (n1 >= 64){
n1 = n1 - 64;
re[0]++;
}else if (n1 >= 16){
n1 = n1 - 16;
re[1]++;
}else if(n1 >= 4){
n1 = n1 - 4;
re[2]++;
}else if (n >=1){
n1 = n1 - 1;
re[3]++;
}
}
for (int i=1; i<4; i++){
re[0] += re[i];
}
System.out.println(re[0]);
}
}