题目传送门:https://www.patest.cn/contests/gplt/L1-033
题目大意:给你一个一个年份和要求的重复数字,年份不足四位数的前面加0补足四位数,问多少年后的年份符合规定的重复数字要求。
知识点:
1.四位数的年份求不同的数字出现了多少次有两种非常简单快捷的方法:
1)开一个数组代表0-9,如果出现过就这个位++,最后扫一遍求非零的个数。
2) 用set接口实现hashset类,然后向对象加数字,如果成功就ans+1,最后得到的就是不重复的数字
2.最后输出的时候要求如果不够四位数字就补齐四位。这里可以用printf("%d %04d",变量1,变量2)的方法输出。在4前面加0表示用0来补齐前面的数字最终达到四位的输入,如果不是0的话就用空格补齐。//d是decimal 表示十进制的意思
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main{
static Scanner input = new Scanner(System.in);
static Set check;
public static void main(String[] args){
int num = input.nextInt();
int end = input.nextInt();
int step = 0;
while(true){
if(different(num)!=end){
num++;
step++;
}else{
break;
}
}
System.out.printf("%d %04d",step,num);
}
static int different(int num){
int x = num%10;
int y = (num/10)%10;
int z = (num/100)%10;
int k = (num/1000)%10;
check = new HashSet();
return (check.add(x)?1:0)+(check.add(y)?1:0)+(check.add(z)?1:0)+(check.add(k)?1:0);
}
}