PAT乙7-1 祖传好运 (15分)JAVA

题目

我们首先定义 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;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值