题目
我们首先定义 0 到 9 都是好运数,然后从某个好运数开始,持续在其右边添加数字,形成新的数字。我们称一个大于 9 的数字 N 具有祖传好运,如果它是由某个好运数添加了一个个位数字得到的,并且它能被自己的位数整除。
例如 123 就是一个祖传好运数。首先因为 1 是一个好运数的老祖宗,添加了 2 以后,形成的 12 能被其位数 2 (即 12 是一个 2 位数)整除,所以 12 是一个祖传好运数;在 12 后面添加了 3 以后,形成的 123 能被其位数 3 整除,所以 123 是一个祖传好运数。
本题就请你判断一个给定的正整数 N 是不是具有祖传的好运。
输入格式
每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 K (≤1000);第 2 行给出 K 个不超过 109的待评测的正整数,注意这些数字都保证没有多余的前导零。
输出格式
对每个待评测的数字,在一行中输出 Yes 如果它是一个祖传好运数,如果不是则输出 No。
输入样例
5
123 7 43 2333 56160
输出样例
Yes
Yes
No
No
Yes
思路
首先定义a1表示输入几个数,再定义flag为0,然后输入要输入的数字 注意这里输入的数字应该是string型的,这样我们就可以得到这个数字的位数,接下来倒序遍历位数,做取余判断每一次判断都要将原来的数除10,为下一次的判断做准备,如果取余的结果不为0,则将flag赋值为1,最后判断flag是0还是1就可以了
代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner a=new Scanner(System.in);
int a1=a.nextInt();
int flag=0;
for (int i = 0; i < a1; i++) {
String a2=a.next();
long a3= Long.parseLong(a2);
for (int j = a2.length(); j > 0; j--) {
if(a3%j==0){
a3=a3/10;
}else {
flag=1;
}
}
if(flag==0){
System.out.println("Yes");
flag=0;
}
else {
System.out.println("No");
flag=0;
}
}
}
}