代码如下: public class k好数 { final static int Mod=1000000007;
public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int K=sc.nextInt();//输入K进制 int L=sc.nextInt();//输入L长度 int sum=0; //横坐标是位数,纵坐标是进制 //表示l位以k结尾,从1号开始,k中表示1.2.3.···k-1 int[][] arr=new int[L+1][K]; for(int i=1;i<=L;i++){ for(int j=0;j arr[i][j]=0;//先进行初始化 } for(int i=0;i arr[1][i]=1; } for(int i=2;i<=L;i++){//每位 for(int j=0;j for(int x=0;x if(x!=j-1 && x!=j+1){//就是说不相邻 arr[i][j] += arr[i-1][x];//加上少一位的k的位数的值,先开始的初始值都为0; arr[i][j] %=Mod;//进行余数计算 } } } } //把K=0的去掉,不加入sum的值 for(int j=1;j sum +=arr[L][j]; sum%=Mod; } System.out.println(sum); }
}