package Main;

import java.io.InputStream;
import java.util.Scanner;
public class Main
{
public static long constant = 1000000007;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long k = in.nextLong();
long l = in.nextLong();
//dp[i][j] = num 表示第i位的数字j有num种可能性
long dp[][] = new long[103][103]; //二维数组用于存放所有可能的个数
//初始化
for(int i=0;i<k;i++)
{
dp[1][i] = 1;
}
for(int i=2;i<=l;i++)
{
for(int j=0;j<k;j++)
{
for(int f=0;f<k;f++)
{
if((f-j!=-1)&&(f-j!=1))
{
dp[i][j] += dp[i-1][f];
dp[i][j] = dp[i][j]%constant;
}
}
}
}
long result = 0;
//从1开始,去掉起始以0开头的部分
for(int i=1;i<k;i++)
{
result += dp[(int) l][i];
result = result%constant;
}
System.out.println(result);
} }
问题描述

如果一个自然数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进制表示中任意的相邻的两位都不是相邻的数字,是指K进制的数字使用0~k-1的数字组成该自然数,即4进制数:只能包含0,1,2三个数。同时对于相邻两位不是相邻的数字是指2,3相邻所以不能出现23这个数。

  该问题采用动态规划的方法,通过部分解的方式层层递进,首先求出K进制的1位数有几种可能,进而得出2位数的几种可能,依次得出结果。本次中采用数组dp[][]用于存储计算的数,dp[i][j] = num  表示第i位的数字j有num种可能性。

步骤:

step1:首先初始化,将第一行的从0开始到K-1列填充数字1,代表有1种可能性

step2:其次,三层循环嵌套,外面两层循环代表行列数,注意:其中行从2开始,最内一行从0到k-1遍历,指带在该范围内,出现该数字的几种可能性

step3:动态规划的核心方程为:

dp[i][j] += dp[i-1][f];
dp[i][j] = dp[i][j]%constant;

边求解边求模,否则最后可能因数字太大出错。

算法---ALGO-3 Java K好数 蓝桥杯的更多相关文章

  1. K好数--蓝桥杯

    JAVA版K好数--蓝桥杯 历经千辛万苦,也算是研究出来了这道题了. 这道题主要运用了动态规划(Dynamic Planning)的思想,何谓动态规划?其实就是将一个大问题分成一个个小问题,然后先通过 ...

  2. Java实现第九届蓝桥杯全球变暖

    全球变暖 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ...

  3. Java实现 第十一届蓝桥杯——超级胶水(渴望有题目的大佬能给小编提供一下题目,讨论群:99979568)

    PS: 好久没写过算法题了,总感觉自己写的思路没问题,但是结果就是不对,希望哪位大佬有时间能给找找问题 超级胶水 小明有n颗石子,按顺序摆成一排,他准备用胶水将这些石子黏在一起. 梅克什字有自己的重量 ...

  4. Java实现第十一届蓝桥杯JavaB组 省赛真题

    试题 A: 指数计算 本题总分:5 分 [问题描述] 7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民 走过了 99 年. 请计算:7 ^ 2020 mod 1921,其中 ...

  5. Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛

    有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...

  6. Java实现第九届蓝桥杯小朋友崇拜圈

    小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...

  7. Java实现 第十一届蓝桥杯——走方格(渴望有题目的大佬能给小编提供一下题目,讨论群:99979568)

    走方格 问题描述在平面上有一些二维的点阵. 这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第1 至第 m 列,每一个点可以用行号和列号来表示. 现在有个人站在第 ...

  8. 方格填数--蓝桥杯---dfs

    答案:1580 相似题目:N皇后问题 注意要枚举的是什么 #include<iostream> #include<string.h> using namespace std; ...

  9. java实现第二届蓝桥杯最小公倍数(c++)

    最小公倍数. 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多. 事实上,它是1至6的每个数字的倍数.即1,2,3,4,5,6 ...

随机推荐

  1. 强大的时间处理库 moment

    中文文档: http://momentjs.cn/docs/ 常用方法 1.当前时间对象  moment ()   /  指定时间对象  moment("2019-09-19 08:00:0 ...

  2. JWT简明介绍

    JSON Web Token一种数据格式,用来表示Token.具有可扩展.防篡改.能够在URL中安全传输的特性,已经形成标准,定义在rfc7519. JSON Web Token (JWT) is a ...

  3. Android 使用URLConnection下载音频文件

    本文链接: Android 使用URLConnection下载音频文件 使用MediaPlayer播放在线音频,请参考Android MediaPlayer 播放音频 有时候我们会需要下载音频文件.这 ...

  4. [C++]invalid initialization of non-const reference of type 'std::__cxx11::string& {aka std::__cxx11::basi

    解决方法:在参数前面加一个cosnt或者把引用符号去掉

  5. (6)autotools工具的使用

       autotools是专门用来生成Makefile的一系列工具,包括autoscan.aclocal.autoheader.autoconf.automake等.     (1)autotools ...

  6. Maven 梳理-自动创建Maven项目(非web)

    mvn archetype:create和mvn archetype:generate create is deprecated in maven 3.0.5 and beyond,在maven3.0 ...

  7. 利用python爬虫关键词批量下载高清大图

    前言 在上一篇写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的情况下实现了图虫创意无水印高清小图的批量下载.虽然小图能够在一些移动端可能展示的还行,但是放到pc ...

  8. Kubernetes 系列(六):Kubernetes部署Prometheus监控

    1.创建命名空间 新建一个yaml文件命名为monitor-namespace.yaml,写入如下内容: apiVersion: v1 kind: Namespace metadata: name: ...

  9. httpd2.4

    更换网站主页目录 1.在httpd.conf文件中更改documentroot为新的路径,并为其相应的路径给与相应的权限. Documentroot "/www/http" < ...

  10. Android 总结:ContentProvider 的使用

    一.概述 ContentProvider:为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据. Android内置的许多数据都是使用ContentProvider形式,供开发者调用的 ( ...