1121 祖传好运 – PAT乙级真题

我们首先定义 0 到 9 都是好运数,然后从某个好运数开始,持续在其右边添加数字,形成新的数字。我们称一个大于 9 的数字 N 具有祖传好运,如果它是由某个好运数添加了一个个位数字得到的,并且它能被自己的位数整除。

例如 123 就是一个祖传好运数。首先因为 1 是一个好运数的老祖宗,添加了 2 以后,形成的 12 能被其位数 2 (即 12 是一个 2 位数)整除,所以 12 是一个祖传好运数;在 12 后面添加了 3 以后,形成的 123 能被其位数 3 整除,所以 123 是一个祖传好运数。

本题就请你判断一个给定的正整数 N 是不是具有祖传的好运。

输入格式:

每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 K (≤1000);第 2 行给出 K 个不超过 10^9 的待评测的正整数,注意这些数字都保证没有多余的前导零。

输出格式:

对每个待评测的数字,在一行中输出 Yes 如果它是一个祖传好运数,如果不是则输出 No

输入样例:

5
123 7 43 2333 56160

输出样例:

Yes
Yes
No
No
Yes

分析:num存储每一个需要判断的数字,good用来标记该数字是否为祖传好运数。
由于需要保证任意一个位置作为结尾都是祖传好运数,所以可以先按当前的数字进行判断,然后移除最后一位(num /= 10)而不需要按照题目说的从最左边一位开始看(方便编码)。
类似从右到左分解各个位数, 循环查看当前数字能否整除位数,位数这里我们将数字转换成string再用size()函数比较方便。不能整除就做好标记跳出循环,最后查看标记输出对应的答案

 

❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼

❤ 点击这里 -> 订阅《从放弃C语言到使用C++刷算法的简明教程》by 柳婼

❤ 点击这里 -> 订阅PAT甲级乙级、蓝桥杯、GPLT天梯赛、LeetCode题解离线版