SZ#G6KP21. 【GESP强化 六级】回文基

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11565 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 入门 上传者: 标签>GESPGESP强化C++c++编程题背包问题完全背包方案计数1星

题目描述

给定一个正整数 nn。我们称没有前导零的正整数 aa 为回文数,如果将其数字顺序反转后仍然与原数相同。请你计算将 nn 表示为若干个正回文数之和的不同方案数。若至少有一种回文数的使用次数不同,则认为两种方案不同。例如,5=4+15=4+15=3+1+15=3+1+1 被认为是不同的方案,但 5=3+1+15=3+1+15=1+3+15=1+3+1 被认为是相同的方案。

形式化地说,你需要计算所有和为 nn 的正回文数的不同多重集合的数量。

由于答案可能很大,请输出答案对 109+710^9+7 取模后的结果。

输入格式

输入的第一行包含一个整数 tt1t1041\leq t\leq 10^4),表示测试用例的数量。

每个测试用例包含一行,一个整数 nn1n41041\leq n\leq 4\cdot 10^4),表示需要用正回文数之和表示的目标数。

输出格式

对于每个测试用例,输出一个整数,表示所需答案对 109+710^9+7 取模后的结果。

2
5
12
7
74
2
14
5
126
7
3
47
21
27
42901
639
2060

说明/提示

对于第一个测试用例,将 55 拆分为正回文数之和的方案有 77 种:

  • 5=1+1+1+1+15=1+1+1+1+1
  • 5=1+1+1+25=1+1+1+2
  • 5=1+2+25=1+2+2
  • 5=1+1+35=1+1+3
  • 5=2+35=2+3
  • 5=1+45=1+4
  • 5=55=5

对于第二个测试用例,将 1212 拆分为正整数之和的方案共有 7777 种,但其中 12=2+1012=2+1012=1+1+1012=1+1+1012=1212=12 不是有效的回文数拆分方案,因为 10101212 不是回文数。因此,将 1212 拆分为正回文数之和的方案有 7474 种。