第 2 题 数字过程 (numberprocess)
时间限制 30 s · 空间限制 64 MB · 24 个测试点 · 全文比较(过滤行末空格及文末回车)
本题使用文件输入输出:输入文件 numberprocess.in,输出文件 numberprocess.out。
- 题目代号:1ic
- 时间限制:30 s,内存限制:64 MB
题目描述
考虑函数 f(n),它返回 n 的各位数字之和。例如:f(2019)=2+0+1+9=12。再考虑函数
g(n)=n+f(n)2.例如:g(2019)=2019+f(2019)2=2019+122=2019+144=2163。
Bajtazar 非常喜欢函数 g。他开始进行如下过程:从 n=1 开始,计算 g(n) 并把结果作为新的 n;然后再计算 g(n) 并再次更新 n,如此反复。这个过程得到的前四个数是 1,2,6,42。
Bajtazar 有许多喜欢的数,对每一个他都想知道:这个数是否可能由他的过程得到?请你帮帮他!
对每个给出的数,判断它是否能由该过程得到并输出结果。
输入格式
第一行一个自然数 Q(1≤Q≤100000),表示询问数量。
接下来 Q 行,每行一个自然数 Mi(1≤Mi≤5⋅109),表示一个询问。
输出格式
输出恰好 Q 行。第 i 行对应第 i 个询问的答案:若 Mi 能由 Bajtazar 的过程得到,输出 TAK,否则输出 NIE。
样例
样例 1
输入:
输出:
文本
TAK
TAK
NIE
TAK
TAK
NIE
样例 2
输入:
输出:
数据范围与子任务
| 额外限制 |
分值 |
| Q≤1 |
10 |
| Mi≤1000000 且 Q≤10 |
20 |
| Mi≤107 |
60 |
完整数据满足 1≤Q≤100000,1≤Mi≤5⋅109。
说明
过程产生的数称为「特殊数」。由于 g(n)>n,该序列严格递增。可以证明,不超过 5⋅109 的特殊数只有约 2962717 个,数量足够少,使得预生成与排序后双指针问答查询成为可能。