k好数(动态规划)
问题描述
如果一个自然数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。
解题思路
对于本题使用动态规划是最简单的,只要保证相邻的两位绝对值不为 1即可,每次高位遍历一个数据都要进行重新计算是数据规模逐渐庞大,所以必须每次都进行模运算。在二维数组中存储含义:行为位数,列为此位可以从0到k存的数(这里的k就是进制上限),二维数组储存的是若最高位(当前最高位)是这个数那么他可以存在多少个k好数
Gcc编译通过
#include<stdio.h>
#include <math.h>
#define mod 1000000007
#define N 105
int Num[N][N]={0};
long long KGoodNumber(int k,int l)
{
long long cnt=0;
int i,j,x;
for(i=0;i<k;i++){Num[1][i]=1;}
for(i=2;i<=l;i++){
for(j=0;j<k;j++){
for(x=0;x<k;x++){
if(abs(j-x)!=1){
Num[i][j]+=Num[i-1][x];
Num[i][j]%=mod;
}
}
}
}
for(i=1;i<k;i++){//最高位不能为0
cnt+=Num[l][i];
cnt%=mod;
}
printf("%lld",cnt);
}
int main(void)
{
int k,l;
scanf("%d%d",&k,&l);
KGoodNumber(k,l);
return 0;
}
500B
C
正确
100
15ms
824.0KB
k好数(动态规划)的更多相关文章
- 动态规划专题 多阶段决策问题 蓝桥杯 K好数
问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...
- [ALGO-3] K好数
算法训练 K好数 时间限制:1.0s 内存限制:256.0MB 问题描写叙述 假设一个自然数N的K进制表示中随意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数 ...
- K好数--蓝桥杯
JAVA版K好数--蓝桥杯 历经千辛万苦,也算是研究出来了这道题了. 这道题主要运用了动态规划(Dynamic Planning)的思想,何谓动态规划?其实就是将一个大问题分成一个个小问题,然后先通过 ...
- 蓝桥杯之K好数
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...
- 算法笔记_077:蓝桥杯练习 K好数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...
- 算法---ALGO-3 Java K好数 蓝桥杯
package Main; import java.io.InputStream; import java.util.Scanner; public class Main { public stati ...
- 蓝桥杯 K好数
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...
- 蓝桥杯 K好数(Java)
越来越觉得自己菜,一道简单的动态规划写不出来,题解也是看了很多份才看懂了,所以尽量以图表的方式写了题解,希望我的题解能帮到其他人吧.(;´Д`) 首先是题目: 输入描述: 输入包含两个正整数,K和L. ...
- 51Nod 1001 数组中和等于K的数对 Label:Water
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...
随机推荐
- matlab考试重点详解
此帖是根据期末考试复习重点补充完成, 由于使用word编辑引用图片和链接略有不便, 所以开此贴供复习及学习使用.侵删 复习要点 第一章 Matlab的基本概念,名称的来源,基本功能,帮助的使用方法 1 ...
- js方法总结,不断更新...
1. 返回<li> 元素父节点: document.getElementById("item1").parentNode; 2.
- 个人永久性免费-Excel催化剂功能第93波-地图数据挖宝之两点距离的路径规划
在日常手机端,网页端的向地图发出两点距离的行程规划,相信绝大多数人都有用到过,但毕竟是个体单一行为,若某些时候需要用到批量性的操作,就显得很不现实了,同时,数据只是在应用或网页内,非结构化的数据,也是 ...
- vue使用问题总结(长期更新)
循环中绑定标签的属性 <div class="imgdiv" v-for="template of templateArr"> <img :s ...
- Android - ScrollView 使用小计 里面嵌套的View 如何设置全屏
设置ScrollView的属性android:fillViewport="true" 即可 <?xml version="1.0" encoding=&q ...
- nginx配置目录访问&用户名密码控制
背景 项目上需要一些共享目录让外地同事可以网页访问对应的文件,且受权限控制: 现有环境: centos nginx 你可以了解到以下内容: 配置nginx开启目录访问 并配置nginx用户名和密码进行 ...
- Cesium 学习(一)环境搭建
网上已有很多文章来教我们搭建Cesium的环境,我也没有必要再写一次:下面是我参照的文章的地址: 1.https://www.cnblogs.com/huqi-code/p/8287403.html ...
- Java 集合框架部分面试题
1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1 ...
- 如何在 Centos7 中安装 Mysql 5.7
一.下载安装包 (1). 下载MySQL源码 (进入/usr/local/src目录,使用wget下载) cd /usr/local/src wget https://dev.mysql.com/ge ...
- JS面向对象编程(二):构造函数的继承
对象之间继承的 5 中方法. 比如, 现在有一个"动物"对象的构造函数. function Animal(){ ...