Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?
分析:
因为需要硬币的面值不一样大,而且硬币肯定是越少越好的,我们可以通过除余的方式来从大到小换取硬币。
- 用1024减去购买商品需要花费的钱。
- 用剩下的钱对硬币的面值分别做除法和除余操作。
- 计算硬币总和并且输出。
源代码:
import java.util.Scanner;
/**
* Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。
* 现在小Y使用1024元的纸币购买了一件价值为N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?
*/
public class Test1 {
static int m1 =1;
static int m2 =4;
static int m3 =16;
static int m4 =64;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输入要购买的商品的价格
int money = 1024-sc.nextInt();
System.out.println(num(money));
}
static int num(int money){
// 对硬币从大到小依次除余
int n4 = money/m4;
money = money%m4;
int n3 = money/m3;
money = money%m3;
int n2 = money/m2;
money = money%m2;
int n1 = money;
//返回硬币数量总和
return n1+n2+n3+n4;
}
}