首页 > 其他分享 >[pdd笔试]多多的数字之和

[pdd笔试]多多的数字之和

时间:2023-01-02 13:12:01浏览次数:28  
标签:Scanner int stringBuilder 笔试 System 最小值 多多 pdd 数字

题目

数字十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。满足条件的数字可能很多,找到其中的最小值即可。

  • 输入描述
    共一行,一个正整数N,如题意所示,表示组合中数字不同数位之和。
    (1 <= N <= 1,000)

  • 输出描述
    共一行,一个整数,表示该组合中的最小值。
    如果组合中没有任何符合条件的数字,那么输出-1即可。

  • 例子
    输入例子:
    5
    输出例子:
    5
    例子说明:
    符合条件的数字有:5,14,23,32,41
    其中最小值为5

分析

由于要求数字各位均不相同,那么数字做多为1234567890 这10位,数字之和为45, 所以0<=N<=45;
要想数字最小,那么低位越大越好,就从9开始循环递减就行

代码实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            // int b = in.nextInt();
            solve(a);
        }
    }
    private static void solve(int N) {
        if(N>45) {
            System.out.println("-1"); 
            return;
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 9; i > 0; i--) {
            if (N >= i) {
                N -= i;
                stringBuilder.insert(0, i);
            }
        }
        System.out.println(stringBuilder.toString());
    }
}

标签:Scanner,int,stringBuilder,笔试,System,最小值,多多,pdd,数字
From: https://www.cnblogs.com/happy-to-study/p/17019757.html

相关文章