【算法】合法字符串 *****

  闲来无事,又看了一道算法题,这个题目难度系数有点高,数学功底差算是完全暴露出来了。

  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:

  这个题目的分析我也是看来的,我就不再赘述了,大家看一下我发的链接:

  http://blog.csdn.net/oucyxc/article/details/11694749

posted @ 2013-10-15 21:50  ssdut-deng  阅读(193)  评论(0编辑  收藏  举报