题目

样例

解题思路
1、 该题有点难度,但实际上定义一个函数就可以解决问题,还是把数据添加到数组下标中,如果对应数值有数值的话,数组元素就不为0了。
2、 然后我们定义一个find函数,根据题意如果M不存在,那么输出-1,就是K的值大于等于10,一定没有M存在,所以函数可以写如果K>=10 ,return -1;
然后for循环,从输入的n开始循环,这里需要注意的是,最后我们要得到for循环里i的值,所以这里把i保存一下,后面计算用x,还需要注意i要对10取余,所以一开始i的条件应该比题目里的100000多一个0;对10取余看个位上的数是否包含讨厌的数字,这里的判断条件是arr[x%10]==0,如果不等于0,就代表不符合题目要求,继续for循环,直到找到符合条件的数,x!=0是while的一个条件,如果x等于0了,就说明找到了符合条件的数,跳出循环即可,其他条件都是返回-1;
3、 注意在数组中输入下标的格式;下面给出代码。
参考代码
package Test;
import java.util.Scanner;
public class d {
public static int find(int n,int arr[],int k) {
if(k>=10) {
return -1;
}
for(int i=n;i<1000000;i++) {
int x=i;
while(arr[x%10]==0&&x!=0) {
x/=10;
}
if(x==0) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
while(a-->0) {
int n=sc.nextInt();
int k=sc.nextInt();
int arr[]=new int [10];
for(int i=0;i<k;i++) {
arr[sc.nextInt()]++;
}
int c=find(n, arr, k);
System.out.println(c);
}
}
}
版权声明:本文为qq_44900959原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。