1.紧密数
给出一个数字字符集{0, 1, ... , k}, 0 <= k <= 9 .如果由这个集合上的字符组成长度为n的数字中,任意相邻的字符数字差不超过1,则称该数为紧密的。如k=4,n=5时,12343就是一个紧密的数,而12340不是一个紧密的数。
输入2个整数k与n,1 <= n <= 100.输出由字符集{0,1, ... , k}构成的长度为n的紧密数个数占长度为n的数字总数的百分比,精确到小数点后5位。
样例输入 样例输出
4 1 100.00000
2 5 40.74074
3 5 17.38281
8 7 0.10130
分析:如果第一个数为0或者k,那么第二个数都只有两种可能——0,1或者k-1,k。如果第一个数为j(0<j<k),那么第二个数有三种可能——j-1,j, j+1.
若用 cnt[i-1][j] 表示当前第i个数取j的可能数,那么cnt[0][j] 都为1。依上分析,cnt[1][0] = cnt[0][0] + cnt[0][1] ,cnt[1][k] = cnt[0][k-1][k+1],cnt[1][j] &