CCF CSP 202006-4 1246 Python 动态规划

#官网出题之后再补上原题

#本题用了动态规划的思路


简单描述题目:

#1246四个数字

#输入n(迭代次数),S(要查询的字符串)

#从1开始,对其进行迭代n次,对其每一位数字进行以2为底的幂运算

#比如 "246" -> "41664(4 16 64)"#

#求在迭代n次之后,字符串S在长字符串中出现的次数

#数据量:n<10^9   S长度<=5

#出现的次数可能非常大,所以要求对998244353取余#时间限制10s.(使用本算法n>10^6可能会超时,运算时间不受S长度影响)

 

用例:

输入:

9

26

输出:

5

 

解释:

迭代第九次:

"166416264641626446416166416264264641626446416"

26出现了5次

(观察了一下应该不会出现222中22重叠不知道算一次还是两次的这类情况)

 

#看到题之后的几种(错误)思路,导致我误以为此题很简单

#误区1:按照题目要求一步一步迭代.如果仔细思考能发现,字符串中的4和6,在求2的幂之后,长度是翻倍的.所以这道题如果用暴力解法,空间复杂度是O(2^n),绝对不可接受,因为题目要求n<10^9.我开始没考虑这个问题,浪费时间尝试了暴力解.

暴力法代码:

n=int(input())
S=input()

#初始串
pow_S="1"

#循环迭代
for i in range(n):
	temp_str=""

	#逐个字符求2的幂
	for c in pow_S:
		temp_str+=str(1<

暴力法得出的前几次迭代数据:

1

2

4

16

264

46416

166416264

264641626446416

46416641626446416166416264

166416264641626446416166416264264641626446416

26464162644641664162644641616641626426464162644641646416641626
446416166416264

4641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416

1664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264

4641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264

16641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416

264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264

46416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416

166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264

264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416

 

 

 

#误区2:看到大量片段重复,就试着通过建立一个字典/映射,来存一些中间的计算结果,避免重复计算,尝试动态规划的思想.但是尝试之后失败了.因为没有找到正确的符合字符串变化规律的模型.

 

 

正确解法:

正确的方法是在画图之后才想出来的:

CCF CSP 202006-4 1246 Python 动态规划_第1张图片

 

 

试着把用例上要求的S=26都圈出来:

CCF CSP 202006-4 1246 Python 动态规划_第2张图片

 

可以发现规律:所有的26都是由16进行幂运算迭代而来的.

换句话说,这一次迭代中26出现的次数,等于上一次迭代中16出现的次数.

这时候可以建立一个数组,把五位数以内可能出现的数,给它们的数量做一个统计.事实上五位以内的可能组合只有80种.

数组大小100001.这是通过占用较大的空间,来换取读取的速度.

想要统计的小于五位的数字当作下标,把出现的次数当作元素.

 times_array[16]=10,代表16出现了10次

 

用一些代码可以把从前面暴力法得出的前几次迭代的大坨的数据中找出可能出现的组合:

a=set()

#两位数组合
t="264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416"

for i in range(len(t)//2):
	tt=t[i*2+0]+t[i*2+1]
	a.add(tt)


#三位数组合
t="264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416"

for i in range(len(t)//3):
	tt=t[i*3+0]+t[i*3+1]+t[i*3+2]
	a.add(tt)


#四位数组合
t="46416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641616641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416"

for i in range(len(t)//4):
	tt=t[i*4+0]+t[i*4+1]+t[i*4+2]+t[i*4+3]
	a.add(tt)


#五位数组合
t="264641626446416641626446416166416264264641626446416464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264464166416264464161664162646416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416264641626446416641626446416166416264264641626446416464166416264464161664162644641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626426464162644641664162644641616641626426464162644641646416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464164641664162644641616641626464162644641616641626426464162644641646416641626446416166416264166416264641626446416166416264264641626446416641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464162646416264464166416264464161664162642646416264464164641664162644641616641626446416641626446416166416264641626446416166416264264641626446416464166416264464161664162641664162646416264464161664162642646416264464161664162646416264464161664162642646416264464166416264464161664162642646416264464164641664162644641616641626416641626464162644641616641626426464162644641626464162644641664162644641616641626426464162644641646416641626446416166416264"

for i in range(len(t)//5):
	tt=t[i*5+0]+t[i*5+1]+t[i*5+2]+t[i*5+3]+t[i*5+4]
	a.add(tt)

#输出
for v in a:
	print(v)
26
41
62
16
46
42
64
61
44
66
616
644
664
166
161
164
626
162
426
446
642
641
646
416
464
264
6264
1626
4464
6416
4161
1616
6426
1646
6446
1664
4264
4162
2644
2642
6166
4164
4166
4641
6464
2646
2641
6641
41646
26446
61664
41626
41616
64464
64164
64161
41664
64162
66416
64641
46416
16641
62642
62641
16264
64264
26416
26464
44641
62644
16464
64166
42646
62646
16166
26426

 

 

找完26,再把所有26上面的16都找出来:

CCF CSP 202006-4 1246 Python 动态规划_第3张图片

 

可以发现规律:所有的16都由4转化而成.16出现次数=上一次4出现的次数.

这里的4,和来自独立的4还是64中的4无关,因为是逐个数字处理的.有4就算.

然后找出4:

CCF CSP 202006-4 1246 Python 动态规划_第4张图片

 

可以发现4全部来自上次中的6和2.

这次情况有些不同,6和2两种情况都可以产生4.

不过这并不难处理.

继续按照上述方法:

4来自6和2

6来自4和6

2来自1................

 

到这里,所有长度小于等于2的S都能找到了.然后统计长度为3,4,5的序列

(可以发现,并不是四个数字的任意组合都可能出现,比如11,22,是绝对没有的)

只拿一个长度为5的举例子,来说后面怎么求.

CCF CSP 202006-4 1246 Python 动态规划_第5张图片

假如求16264出现的数量.

它一定由416转化而来,41664转化来.

 

然后根据每次的数量变化关系进行迭代.

这样就可以把空间复杂度从O(2^n)降到O(1)

相当于对80个出现次数迭代了n次

 

#这里用了一些办法来提升速度

#1.用array数组模块代替dict映射,因为array数组为连续存放可以随机读写,速度更快.

#2.备份上一轮迭代的数据,没有使用copy.deepcopy函数.因为函数可能会对100001个大多都是0的元素都进行一次复制,拖慢速度.实际需要复制的只有80个.

#初始化两个长整形数组
from array import array
times_array=array("L",[0 for i in range(100000+1)])
times_array_last=array("L",[0 for i in range(100000+1)])

#模
mod=998244353

#输入
n=int(input())
S=int(input())

#设置迭代初始值
times_array[1]=1

for i in range(n):
	#开始统计之前先对上一轮迭代的结果做一个备份
	times_array_last[1]=times_array[1]
	times_array_last[2]=times_array[2]
	times_array_last[4]=times_array[4]
	times_array_last[6]=times_array[6]
	times_array_last[16]=times_array[16]
	times_array_last[26]=times_array[26]
	times_array_last[41]=times_array[41]
	times_array_last[42]=times_array[42]
	times_array_last[44]=times_array[44]
	times_array_last[46]=times_array[46]
	times_array_last[61]=times_array[61]
	times_array_last[62]=times_array[62]
	times_array_last[64]=times_array[64]
	times_array_last[66]=times_array[66]
	times_array_last[161]=times_array[161]
	times_array_last[162]=times_array[162]
	times_array_last[164]=times_array[164]
	times_array_last[166]=times_array[166]
	times_array_last[264]=times_array[264]
	times_array_last[416]=times_array[416]
	times_array_last[426]=times_array[426]
	times_array_last[446]=times_array[446]
	times_array_last[464]=times_array[464]
	times_array_last[616]=times_array[616]
	times_array_last[626]=times_array[626]
	times_array_last[641]=times_array[641]
	times_array_last[642]=times_array[642]
	times_array_last[644]=times_array[644]
	times_array_last[646]=times_array[646]
	times_array_last[664]=times_array[664]
	times_array_last[6166]=times_array[6166]
	times_array_last[1664]=times_array[1664]
	times_array_last[4641]=times_array[4641]
	times_array_last[4162]=times_array[4162]
	times_array_last[6446]=times_array[6446]
	times_array_last[6464]=times_array[6464]
	times_array_last[4161]=times_array[4161]
	times_array_last[2642]=times_array[2642]
	times_array_last[1626]=times_array[1626]
	times_array_last[6641]=times_array[6641]
	times_array_last[6426]=times_array[6426]
	times_array_last[4166]=times_array[4166]
	times_array_last[2641]=times_array[2641]
	times_array_last[6264]=times_array[6264]
	times_array_last[6416]=times_array[6416]
	times_array_last[4164]=times_array[4164]
	times_array_last[2644]=times_array[2644]
	times_array_last[1646]=times_array[1646]
	times_array_last[1616]=times_array[1616]
	times_array_last[4264]=times_array[4264]
	times_array_last[2646]=times_array[2646]
	times_array_last[4464]=times_array[4464]
	times_array_last[42646]=times_array[42646]
	times_array_last[62646]=times_array[62646]
	times_array_last[64161]=times_array[64161]
	times_array_last[62641]=times_array[62641]
	times_array_last[64166]=times_array[64166]
	times_array_last[64264]=times_array[64264]
	times_array_last[41646]=times_array[41646]
	times_array_last[16464]=times_array[16464]
	times_array_last[26464]=times_array[26464]
	times_array_last[46416]=times_array[46416]
	times_array_last[64164]=times_array[64164]
	times_array_last[62642]=times_array[62642]
	times_array_last[66416]=times_array[66416]
	times_array_last[41616]=times_array[41616]
	times_array_last[16264]=times_array[16264]
	times_array_last[26416]=times_array[26416]
	times_array_last[61664]=times_array[61664]
	times_array_last[64162]=times_array[64162]
	times_array_last[41664]=times_array[41664]
	times_array_last[26426]=times_array[26426]
	times_array_last[62644]=times_array[62644]
	times_array_last[16641]=times_array[16641]
	times_array_last[64464]=times_array[64464]
	times_array_last[64641]=times_array[64641]
	times_array_last[44641]=times_array[44641]
	times_array_last[26446]=times_array[26446]
	times_array_last[16166]=times_array[16166]
	times_array_last[41626]=times_array[41626]







	#记录1位数出现的次数
	times_array[1]=times_array_last[4]%mod
	times_array[2]=times_array_last[1]%mod
	times_array[4]=(times_array_last[2]+times_array_last[6])%mod
	times_array[6]=(times_array_last[4]+times_array_last[6])%mod

	#记录两位数出现的次数
	times_array[16]=times_array_last[4]%mod
	times_array[26]=times_array_last[16]%mod
	times_array[41]=times_array_last[64]%mod
	times_array[42]=times_array_last[61]%mod
	times_array[44]=times_array_last[62]%mod
	times_array[46]=(times_array_last[26]+times_array_last[66])%mod
	times_array[61]=times_array_last[44]%mod
	times_array[62]=times_array_last[41]%mod
	times_array[64]=(times_array_last[6]+times_array_last[42])%mod
	times_array[66]=times_array_last[46]%mod

	#记录三位数出现的次数
	times_array[161]=times_array_last[44]%mod
	times_array[162]=times_array_last[41]%mod
	times_array[164]=times_array_last[62]%mod
	times_array[166]=times_array_last[46]%mod
	times_array[264]=times_array_last[16]%mod
	times_array[416]=times_array_last[64]%mod
	times_array[426]=times_array_last[616]%mod
	times_array[446]=times_array_last[626]%mod
	times_array[464]=times_array_last[26]%mod
	times_array[616]=times_array_last[44]%mod
	times_array[626]=times_array_last[416]%mod
	times_array[641]=times_array_last[64]%mod
	times_array[642]=times_array_last[61]%mod
	times_array[644]=times_array_last[62]%mod
	times_array[646]=times_array_last[66]%mod
	times_array[664]=times_array_last[46]%mod

	#记录四位数出现的次数
	times_array[6166]=times_array_last[446]%mod
	times_array[1664]=times_array_last[46]%mod
	times_array[4641]=times_array_last[264]%mod
	times_array[4162]=times_array_last[641]%mod
	times_array[6446]=times_array_last[626]%mod
	times_array[6464]=times_array_last[66]%mod
	times_array[4161]=times_array_last[644]%mod
	times_array[2642]=times_array_last[161]%mod
	times_array[1626]=times_array_last[416]%mod
	times_array[6641]=times_array_last[464]%mod
	times_array[6426]=times_array_last[616]%mod
	times_array[4166]=times_array_last[646]%mod
	times_array[2641]=times_array_last[164]%mod
	times_array[6264]=times_array_last[416]%mod
	times_array[6416]=times_array_last[64]%mod
	times_array[4164]=times_array_last[642]%mod
	times_array[2644]=times_array_last[162]%mod
	times_array[1646]=times_array_last[426]%mod
	times_array[1616]=times_array_last[44]%mod
	times_array[4264]=times_array_last[616]%mod
	times_array[2646]=times_array_last[166]%mod
	times_array[4464]=times_array_last[626]%mod

	#记录五位数出现的次数
	times_array[42646]=times_array_last[6166]%mod
	times_array[62646]=times_array_last[4166]%mod
	times_array[64161]=times_array_last[644]%mod
	times_array[62641]=times_array_last[4164]%mod
	times_array[64166]=times_array_last[646]%mod
	times_array[64264]=times_array_last[616]%mod
	times_array[41646]=times_array_last[6426]%mod
	times_array[16464]=times_array_last[626]%mod
	times_array[26464]=times_array_last[166]%mod
	times_array[46416]=times_array_last[264]%mod
	times_array[64164]=times_array_last[642]%mod
	times_array[62642]=times_array_last[4161]%mod
	times_array[66416]=times_array_last[464]%mod
	times_array[41616]=times_array_last[644]%mod
	times_array[16264]=times_array_last[416]%mod
	times_array[26416]=times_array_last[164]%mod
	times_array[61664]=times_array_last[446]%mod
	times_array[64162]=times_array_last[641]%mod
	times_array[41664]=times_array_last[646]%mod
	times_array[26426]=times_array_last[1616]%mod
	times_array[62644]=times_array_last[4162]%mod
	times_array[16641]=times_array_last[464]%mod
	times_array[64464]=times_array_last[626]%mod
	times_array[64641]=times_array_last[664]%mod
	times_array[44641]=times_array_last[6264]%mod
	times_array[26446]=times_array_last[1626]%mod
	times_array[16166]=times_array_last[446]%mod
	times_array[41626]=times_array_last[6416]%mod

#输出结果
print(times_array[S])

 

算法运行时间还有待改善

未完待续.............. 

 

你可能感兴趣的:(CCF,CSP,csp,算法,动态规划,python,数据结构)