#P12750. [POI 2017 R2] 数字之和 Sum of digits

[POI 2017 R2] 数字之和 Sum of digits

题目背景

翻译来自于 LibreOJ

题目描述

题目译自 XXIV Olimpiada Informatyczna — II etap Suma cyfr

编写程序,在所有正整数中,找出满足数字之和为 ss 且能被 mm 整除的第 kk 小数。若该数不存在或超过 200200 位,输出 NIE

输入格式

第一行包含三个正整数 s,m,qs, m, q,分别表示数字之和、除数和测试数据组数。

接下来的 qq 行每行描述一组测试数据,第 ii 行包含一个正整数 kik_i,表示需找第 kik_i 小的满足条件的数。

输出格式

输出 qq 行,每行对应一组测试数据的答案。第 ii 行输出满足数字之和为 ss 且可被 mm 整除的第 kik_i 小数,若该数不存在或超过 200200 位,输出 NIE

5 2 3
2
4
1000000000000000000
32
104
NIE

提示

样例 1 解释

满足数字之和为 55 的数依次为:5,14,23,32,41,50,104,113,122,5, 14, 23, 32, 41, 50, 104, 113, 122, \ldots 仅保留偶数,得到序列:14,32,50,104,122,14, 32, 50, 104, 122, \ldots101810^{18} 小的数超过 200200 位。

附加样例

  1. s=10,m=1,q=1,k1=5s=10, m=1, q=1, k_1=5,答案 5555
  2. s=200,m=200,q=1,k1=1s=200, m=200, q=1, k_1=1,答案 39999999999999999999998003999999999999999999999800
  3. s=2,m=1,q=1,k1=1000s=2, m=1, q=1, k_1=1000,答案 NIE
  4. s=5,m=2,q=200,ki=is=5, m=2, q=200, k_i=i
  5. s=1,m=7,q=1,k1=1018s=1, m=7, q=1, k_1=10^{18},答案 NIE

所有测试数据满足:$1 \leq s \leq 500, 1 \leq m \leq 500, 1 \leq q \leq 1000000, 1 \leq k_i \leq 10^{18}$。

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 q20q \leq 20,答案不超过 10000001000000 55
22 s=1s=1
33 ki=1k_i=1 1010
44 q=1,m=1,ki1000q=1, m=1, k_i \leq 1000 1515
55 q=1,m=1,ki1000000q=1, m=1, k_i \leq 1000000
66 q=1,m=1,ki109q=1, m=1, k_i \leq 10^9
77 m=1m=1
88 无附加限制 2020