第一题 多多的数字组合
多多君最近在研究某种数字组合:
定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。
满足条件的数字可能很多,找到其中的最小值即可。
输入描述:
共一行,一个正整数N,如题意所示,表示组合中数字不同数位之和。
(1 <= N <= 1,000)
输出描述:
共一行,一个整数,表示该组合中的最小值。
如果组合中没有任何符合条件的数字,那么输出-1即可。
输入例子1:
5
输出例子1:
5
例子说明1:
符合条件的数字有:5,14,23,32,41
其中最小值为5
要求整理:每个数位不同,且和等于N,取组合最小值 数位共1-9,要求组合最小,所以不考虑0,并且低位用当前可用的最大数。 并且1+2+…+9
= 45,所以如果大于45可以直接返回-1。 每次都用最大的数,可以从9开始一直到1。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int ans = 0, max = 9, level = 1;
if(num > 45)System.out.println(-1);
else{
while(num > 0){
if(num > max){
ans += max * level;
level *= 10;
}else ans += num *level;
num -= max;
max--;
}
System.out.println(ans);
}
}
}
多多的字符变换
多多君最近在研究字符串之间的变换,可以对字符串进行若干次变换操作:
交换任意两个相邻的字符,代价为0。
将任意一个字符a修改成字符b,代价为 |a - b|(绝对值)。
现在有两个长度相同的字