K好数(K-Good Number) 如果一个自然数N的K进制表示中任意的相邻的两位都

美丽的洪泽湖2022-10-04 11:39:541条回答

K好数(K-Good Number) 如果一个自然数N的K进制表示中任意的相邻的两位都
K好数(K-Good Number)
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个.给定K、L,求L位K好数的数目.
输入格式:
从文件读入数据,第一行为K、L,其中K

已提交,审核后显示!提交回复

共1条回复
xiaochen_lee 共回答了18个问题 | 采纳率88.9%
DP:
设【a,b】为第a位,填b时的方案数(假定这时一共只有a位)
则转移方程:【a,b】=∑(【a-1,c】Ⅰc符合要求)
附程序
var
a,b,c,d,k,l:longint;
sum:qword;
f:array[0..16,0..16] of qword;
begin
fillchar(f,sizeof(f),0);
readln(k,l);
for b:=0 to k-1 do f[1][b]:=1;//第一位每个数只有一种
for a:=2 to l do
for b:=0 to k-1 do
for c:=0 to k-1 do if abs(b-c)1 then//这里判断是否符合要求
inc(f[a][b],f[a-1][c]);//就是上面那个方程
sum:=0;
for b:=1 to k-1 do inc(sum,f[l][b]);
writeln(sum);
end.
纯手打望采纳
1年前

相关推荐