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。

思路:每一层根据它的前一层得出

#include<stdio.h>
#include<iostream>
using namespace std;
int K,L;
long long s=0;
long long d[110][110];

int main()
{
    /*
        dp思想,第n层是根据n-1层求出来的
        因为第n位数只与第n-1那位数有关
    */
    cin>>K>>L;
    for(int i=1;i<K;i++)     //第一层赋值,开头不能为0
        d[1][i]=1;
    for(int i=2;i<=L;i++)
    {
        for(int j=0;j<K;j++)  //第i层0~k循环
        {
            for(int t=0;t<K;t++)  //第i-1层满足条件的数
            {
                if(t!=j-1&&t!=j+1)
                    d[i][j]=(d[i][j]+d[i-1][t])%1000000007;
            }
        }
    }
    for(int i=0;i<K;i++)
        s=(s+d[L][i])%1000000007;
    cout<<s;
    return 0;
} 
时间: 2024-11-09 01:45:13

K好数(蓝桥杯 动态规划)的相关文章

ALGO-3 Java K好数 蓝桥杯

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.nextLo

回文数-蓝桥杯

题目:用户输入一个数字后,输出5位.6位的回文数,并且回文数的每个数字加起来等于用户输入的数字. 输入:一个正整数n(10<n<100) 输出:若干行,每行包含一个满足要求的5位或6位数,按照升序输出. 如果没有满足要求的,输出-1. 样例: //Q21-回文数 //蓝桥杯 #include<stdio.h> int Result; int Check(int num, int length){ int temp,r1; int check=num; if(length==5){

数字三角形(蓝桥杯 动态规划)

问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,-99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 从最下面往上找,由局部最优解找整体最优解. #include<st

动态规划专题 多阶段决策问题 蓝桥杯 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好数(DP)

本文出自:http://blog.csdn.net/svitter 算法训练 K好数 时间限制:1.0s   内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.31.33 共7个.由于这个数目很大,请你输出它对1000000007取模后的值. 输入格式 输入包含两个正整数,K和L. 输出格式 输出一个整数,表示答案

蓝桥杯——说好的进阶之取数博弈游戏(动态规划实现)

今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个. 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完. 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时,从标准输入获得数据,其格式如下: 先是一个整数n(n<100),表示接下来有n个整数.

蓝桥杯 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

算法笔记_077:蓝桥杯练习 K好数(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如果一个自然数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 数据规模与约定

蓝桥杯之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: 对于5