我们需要统计字符串 t
的所有非空子序列,满足以下两点才算有效:
"0"
以外,不允许以 '0'
开头。对每个有效子序列,根据其首位和末位数字分别给分:
现给定一个仅由数字 0,1,2,...,9构成的字符串t,系统将基于t的所有非空子序列计算奖励分数。
一个子序列被认为是有效的必须同时满足以下条件:
1、子序列所表示的整数不得包含前导零(例如01、007均不合法),但单个字符0被视为合 法: 2.子序列中所有数字之和须能被5整除,即∑digit∈子序列 digit=0(mod 0)
对于每个有效子序列,系统根据以下规则给予奖励:
请计算字符串t的所有非空有效子序列的累计奖励分数,并输出结果对(109+7)取模后的值。
【名词解释】
注意,子序列在选取时必须保持原字符串中字符的顺序不变。
输入一个仅由数字0,1,2,...,9组成的字符串t,其中字符串长度满足(1≦∣t∣≤105)
输出一个整数,表示字符串t的所有非空有效子序列的累计奖励分数对(109+7)取模后的结果。
输入
248
输出
4
说明
对于这组样例:
字符串“248"的所有非空子序列为:
"2": 数字和为2,不满足2=0(mod 5);
"4": 数字和为4;
"8": 数字和为8;
"24": 数字和为2+4=6;
"28": 数字和为2+8=10,满足条件;
"48": 数字和为4+8=12;
"248": 数字和为2+4+8=14;
其中,只有“28”为有效子序列,其首位数字为2(属于{2,3,5,7}),末位数字为8(偶数),因此奖励4分。
输入
205
输出
4
说明
对于这组样例:
"0": 合法(单个零),数字和为0满足条件,奖励 1分;
"5": 数字和为5,其首位为’5’(属于 {2,3,5,7}),末位为’5’(奇数),奖励3分;其他子序列因前导零或数字和不满足条件而无效。
累计奖励分数为1+3=4分。