#4214. 幸运数(23-6四级)

幸运数(23-6四级)

幸运数

【问题描述】

  1. 变化正整数的各个奇数位(从右到左,个位为第1位,奇数,16347),变化的规 则是乘以7,如果该奇数位与7相乘的结果大于9则各位数相加,如相加结果仍然 大于9则继续各位数相加,直到结果不大于9;如果该奇数位与7相乘的结果不大 于9则该数为该奇数位变化结果。
  2. 偶数位不发生变化。
  3. 各个奇数位变化完毕后,将 新数的各位数相加,如果相加之和是8的整数倍,则为幸运数;
  4. 例如16347,第1位7奇数位,乘以7结果为49,大于9各位数相加为13大于9 继续各位数相加最后结果为4;然后变化第3位3,第5位1。
  5. 最后变化结果为76344, 对于结果76344其各位数之和为24,是8的倍数,为幸运数;
  6. 首先输入N,随后输入N行正整数
  7. 。输出N行,对应N个正整数是否为幸运数, 如是则输出T否则F。

【输入描述】

  1. 首先输入正整数N随后输入N行正整数,每个一个数。不考虑输入不合规情形,负

数、负整数、非数字构成的字符串等。特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所 |

inpu​​t​​**(​)​**函数不可有提示信息。

【输出描述】

  1. 输出N行,对应N个正整数是否为幸运数,如是则输出T否则F。;2. 特别提示:注意输出字母为英文大写,小写或其他将判为错误。

【样例输入1】


2


16347


76344

【样例输出1】


T


F

【解析】

本题考察数位拆分运算和循环的综合应用,首先接收N作为循环次数, 在循环内写输入,分别接收N个数到M中,接收到之后,在当次循环内就处理并输出。 在一次循环内tnt用于存储当前M的数位相加之和,最后判断是否为8的倍数, 决定输出结果,loc为处于M的第几位,首先是偶数位很好理解,因为偶数位不需要任何操作,走else直接取出个位,累加在tnt中。 如果是奇数位则需要判断*7之后是否大于9,如果大于9就一直用while做个位+十位操作,直到不大于9为止,然后也累加到tnt中,最后将M的个位去除掉,loc继+1,检测后面的数位,直到将当前的M的各位累加完成,输出对应的T或者F,然后开始执行下一次for循环,直至将所有数字都判断完,分别输出是否为幸运数。

Limitation

1s, 1024KiB for each test case.