解题思路:
主要还是通过找规律去写
本来已经写了一次了 结果手贱点了一下编辑模式 被清空了
以 k=10为例
当n=1时,有效数为9
当n=2时,有效数为90
当n=3时,有效数为821
当n=4时,有效数为8829
通过以上的列举其实可以发现当n>=3时,每一个有效数都是前两个之和去乘以(k-1)
通过思考就可以找到其中的原因有效数的要求是数字中不能有连续有两个或两个以上的0
当n=3时,首项不可能为0,当第二个数为0的时候,其实就是n=2的有效数,当第三个数为0的时候,其实就是n=1的有效数,两个相加再乘以(k-1)就是本身的有效数
以此类推就可以算出之后的有效数字了
用数组表示就好
注意事项:
参考代码:
import java.util.Scanner;
public class java03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
int[] sum = new int[n + 1];
for (int i = 1; i <= n; i++) {
if (i == 1)
sum[i] = k - 1;
else if (i == 2)
sum[i] = k * (k - 1);
else
sum[i] = (sum[i - 1] + sum[i - 2]) * (k - 1);
}
System.out.print(sum[n]);
}
}
0.0分
3 人评分
【求帮助】C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:794 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:648 |
IP判断 (C++代码)浏览:677 |
C语言程序设计教程(第三版)课后习题3.7 (C++代码)浏览:998 |
钟神赛车 (C++代码)浏览:866 |
C语言训练-大、小写问题 (C语言代码)浏览:2357 |
C语言训练-自由落体问题 (C语言代码)浏览:1738 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:675 |
最小公倍数 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:518 |