题目描述
在所有的N位数中,有多少个数中有偶数个数字3?
输入
读入一个数N(N≤15)
输出
输出有多少个数中有偶数个数字3。
样例输入
2
样例输出
73
算法分析
计算初始项
设 F 1 F_1 F1为只有一位数的时候,个位数填0,1,2,4,5,6,7,8,9,方案数量为9,即 F 1 F_1 F1=9
设
F
2
F_2
F2为当有两位数的时候的解,分两种情况讨论
情况1:十位填3
情况1.1:个位不填3,方案为0
情况1.2:个位填3,方案为1
情况2:十位不填3
情况2.1:个位不填3,方案数为8*9=72
情况2.2:个位填3,方案数为0
总方案数量为
F
2
=
72
+
1
=
73
F_2=72+1=73
F2=72+1=73
F
3
F_3
F3为有三位数时候的解
同样的,分情况讨论;
情况1:百位填3
意味着要得到十位和个位数奇数个3的方案数
情况2:百位不填3
意味着要得到十位和个位偶数个3的方案数量,即
F
2
F_2
F2的值
递推方程
因此,为了计算下一位的偶数个3的方案数量,我们还需要保存当前位为奇数个3的方案数量,因此可设
F
(
i
,
0
)
F(i,0)
F(i,0)为第i位有偶数个3的方案数量
F
(
i
,
1
)
F(i,1)
F(i,1)为第i位有奇数个3的方案数量
可得:
F(1,0)=9
F(1,1)=0
F(i,0)=F(i-1,1)+9*F(i-1,0) (假设当前位不是最高位)
F(i,1)=F(i-1,0)+9*F(i-1,1)
注意: 在写程序时需要判断当前位是否为最高位,最高位不能填0