我好菜啊

0 前言

这是大概一个月前做的字节跳动的在线笔试题,显然,我被否了。

为什么写这个呢,因为最近忙,没时间和精力写别的,只能把存货拿出来更新了。

1 题目

Z 国的货币系统包含面值 1 元、4 元、16 元、64 元共计 4 种硬币,以及面值 1024 元的纸币。 现在小 Y 使用 1024 元的纸币购买了一件价值为 N(0<N<=1024) 的商品,请问最少他会收到多少硬币?

输入描述:

一行,包含一个数N。

输出描述:

一行,包含一个数,表示最少收到的硬币数。

输入:

200

输出:

17

说明:

花 200,需要找零 824 块,找 12 个 64 元硬币,3 个 16 元硬币,2 个 4 元硬币即可。

备注:对于100%的数据,N(0<N<=1024)

2 Java 题解

先获取 N 的值,然后设总数 total 为 1024,1024 减去 N 就是找零 change。

change 除以64 就是 64 元硬币的数量,其余硬币的数量也可以依次算出。

import java.util.Scanner;
import static java.util.Arrays.sort;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();  //整数 n
        int total=1024;  //一共 1024
        int change=total-n;  //找零

        int a=change/64;  //64 元硬币的数量
        int b=(change-(a*64))/16;  //16 元硬币的数量
        int c=(change-(a*64+b*16))/4;  //4 元硬币的数量
        int d=(change-(a*64+b*16+c*4))/1;  //1 元硬币的数量
        System.out.println(a+b+c+d);
    }
}