【算法】合法字符串 *****
闲来无事,又看了一道算法题,这个题目难度系数有点高,数学功底差算是完全暴露出来了。
Question:
用n个不同的字符(编号1 - n),组成一个字符串,有如下2点要求:
1、对于编号为i 的字符,如果2 * i > n,则该字符可以作为最后一个字符,但如果该字符不是作为最后一个字符的话,则该字符后面可以接任意字符;
2、对于编号为i的字符,如果2 * i <= n,则该字符不可以作为最后一个字符,且该字符后面所紧接着的下一个字符的编号一定要 >= 2 * i。
问有多少长度为M且符合条件的字符串。
例如:N = 2,M = 3。则abb, bab, bbb是符合条件的字符串,剩下的均为不符合条件的字符串。
输入:n,m (2<=n,m<=1000000000);
输出:满足条件的字符串的个数,由于数据很大,输出该数Mod 10^9 + 7的结果。
Analysis:
这个题目的分析我也是看来的,我就不再赘述了,大家看一下我发的链接: