Loading

java 蓝桥杯算法提高 _3K好数

nums[i][j] 存的是i位数的时候,首位数字是j的K好数的数目,i从1位开始的结果,去算2位时的结果,去算3位时的结果。。。最后得到l位的结果。K进制只是一个范围。 

 1 import java.util.Scanner;
 2 public class _3K好数 {
 3    public static void main(String[] args) {
 4      long l,sum=0;
 5      long[][] num = new long[500][500];
 6      int k;
 7      Scanner scanner = new Scanner(System.in);
 8      k = scanner.nextInt();
 9      l = scanner.nextInt();
10      //不管多少进制,1位数字的只有一个
11      for (int i = 0; i < num.length; i++) {
12         num[i][1] = 1;
13      }
14      for (int j = 2; j <= l; j++) {
15         for (int i = 0; i < k; i++) {
16             for (int p = 0; p < k; p++) {
17                 if (Math.abs(p-i)!=1) {
18                     num[i][j] += num[p][j-1];
19                     num[i][j] = num[i][j]%1000000007;
20                 }
21             }
22         }
23     }
24      for (int i = 1; i < k; i++) {
25         sum += num[i][(int) l];
26         sum %=1000000007;
27     }
28      System.out.println(sum);
29 }
30 }

 

posted @ 2017-03-22 17:35  爱笑的眼睛真美  阅读(835)  评论(1编辑  收藏  举报