如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。

输入格式

输入包含两个正整数,K和L。+

输出格式

输出一个整数,表示答案对1000000007取模后的值。

样例输入

4 2

样例输出

7

数据规模与约定

对于30%的数据,KL <= 106;

对于50%的数据,K <= 16, L <= 10;

对于100%的数据,1 <= K,L <= 100。

做题思路:

这道真是做得不容易,因为题目理解就很难,我相信跟我一样想法的人有很多,k进制到底是怎么回事?那首先我就来解释一下题意。

题意:求L位K进制数中K好数的数目,以题目例子说明,L=2 k=4,为什么11、13、20、22、30、31、33 为是k好数呢?因为k为4进制,所以只有由0、1、2、3来表示数字,所以能表示的L=2位数总共有10、11、12、13、20、21、22、23、30、31、32、33,首位为0的不算,10 因为1和0是相邻的数字,所以10不是K好数,同理12、21、32也不是k好数。

知道这道的题意就容易多了,并且这道题也提示了用动态规划,动态规划是个难点,这次是我第一次做这样的题,所以还有些没有理解清楚,想学习动态规划的可以去网上找教程,有很多。总结来说就是一阶一阶的往上解,每一阶都必须依赖上一阶的解才能算出来。

下面附上代码:

package com.java.qustion01;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int k = input.nextInt();
int l = input.nextInt();
int[][] num = new int[l][k];
for (int i = 0; i < k; i++) {
num[0][i] = 1;
}
for (int i = 1; i < l; i++) {
for (int j = 0; j < k; j++) {
for (int x = 0; x < k; x++) {
if (x != j - 1 && x != j + 1) {
num[i][j] += num[i - 1][x];
num[i][j] %= 1000000007;
}
}
}
}
int count = 0;
for (int i = 1; i < k; i++) {
count += num[l - 1][i];
count %= 1000000007;
}
System.out.println(count);
}
}

蓝桥杯 K好数的更多相关文章

  1. 动态规划专题 多阶段决策问题 蓝桥杯 K好数

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

  2. 蓝桥杯 K好数(dp)

    Description 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.1 ...

  3. 蓝桥杯 K好数(Java)

    越来越觉得自己菜,一道简单的动态规划写不出来,题解也是看了很多份才看懂了,所以尽量以图表的方式写了题解,希望我的题解能帮到其他人吧.(;´Д`) 首先是题目: 输入描述: 输入包含两个正整数,K和L. ...

  4. C语言网 蓝桥杯 1117K-进制数

    这是一道较难的题目,我刚开始用排列组合的方式来做,并没有做出来,故运用了的深搜算法. 深搜算法的概念: 选其中一条路,遍历完成后,逐步返回直至全部遍历,最后返回起点. 解题思路 : 题目中对零的个数没 ...

  5. 第七届 蓝桥杯 方格填数 dfs

    如下的10个格子  填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何 ...

  6. 蓝桥杯 方格填数 DFS 全排列 next_permutation用法

    如下的10个格子(参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个 ...

  7. 2017第八届蓝桥杯 K倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  8. 蓝桥杯-k倍区间

    http://lx.lanqiao.cn/problem.page?gpid=T444 问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, .. ...

  9. 2015蓝桥杯五星填数(C++C组)

    题目:五星填数 如[图1.png]的五星图案节点填上数字:1~12,除去7和11.要求每条直线上数字和相等.如图就是恰当的填法.请你利用计算机搜索所有可能的填法有多少种.注意:旋转或镜像后相同的算同一 ...

随机推荐

  1. java &&和&与逻辑运算区别

    二者都表示与运算,同真为真,遇假即假 && 具有短路功能,前面为false后面不在预算直接表达式为false; &还可以用作位运算符,当&操作符两边的表达式不是 boo ...

  2. Redis02——安装Redis

    1.下载获得redis-3.2.5.tar.gz后将它放入我们的Linux目录/opt 2.解压命令:tar -zxvf redis-3.2.5.tar.gz 3.解压完成后进入目录:cd redis ...

  3. 清理rancher、k8s环境

    清理rancher.k8s环境 待办 https://blog.csdn.net/CSDN_duomaomao/article/details/77684571

  4. 概率dp sgu495

    题意: 有n个奖品,m个人排队来选礼物,对于每个人,他打开的盒子,可能有礼物,也有可能已经被之前的人取走了,然后把盒子放回原处.为最后m个人取走礼物的期望. 思路1: 排队取,第1个人取到1个,dp[ ...

  5. kvm增加磁盘容量

    一.qcow2格式 查看镜像文件实际占用空间 ls -alh t.qcow2 加容量(只能加不能减) qemu-img resize t.qcow2 +1G 查看qcow2信息 qemu-img in ...

  6. Springboot中定时任务的使用

    在springboot中已经集成了定时任务,只需要在启动类上加注解@EnableScheduling即可 例如: 添加类加上@Component注解,添加方法加上@Scheduler即可

  7. 其他 - 02. poolmon 安装

    1. 概述 遇到 win10 的内存泄露 32G 内存都能给吃光 2. 思路 rammap 对整体内存做一个诊断 主要是内存分配 用途 状态 poolmon 确认内存的用途 比 rammap 更精确 ...

  8. via/route blockage/size blockage/wire/pin guide/pin blockage/partition

    1.via 中文名称互连线通孔.我们知道,芯片的连线有不同层的金属互连线相互连接.而Via的作用就是连接这些不同层的金属.如下图所示: 一个完整的通孔是由三层组成的,包括两个互连层和一个cut层,cu ...

  9. Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写。

    Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写. 前提:已经安装过VS2017且进行过配置. 第一部分: Python环境的搭建: 建议 ...

  10. 分布式系统:CAP 理论的前世今生

    CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解.本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解 ...