日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

k好数(动态规划)

發(fā)布時(shí)間:2023/12/13 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 k好数(动态规划) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題描述

如果一個(gè)自然數(shù)N的K進(jìn)制表示中任意的相鄰的兩位都不是相鄰的數(shù)字,那么我們就說這個(gè)數(shù)是K好數(shù)。求L位K進(jìn)制數(shù)中K好數(shù)的數(shù)目。例如K = 4,L = 2的時(shí)候,所有K好數(shù)為11、13、20、22、30、31、33 共7個(gè)。由于這個(gè)數(shù)目很大,請(qǐng)你輸出它對(duì)1000000007取模后的值。

輸入格式

輸入包含兩個(gè)正整數(shù),K和L。

輸出格式

輸出一個(gè)整數(shù),表示答案對(duì)1000000007取模后的值。

樣例輸入

4 2

樣例輸出

7

數(shù)據(jù)規(guī)模與約定

對(duì)于30%的數(shù)據(jù),KL <= 106;

對(duì)于50%的數(shù)據(jù),K <= 16, L <= 10;

對(duì)于100%的數(shù)據(jù),1 <= K,L <= 100。

解題思路

對(duì)于本題使用動(dòng)態(tài)規(guī)劃是最簡單的,只要保證相鄰的兩位絕對(duì)值不為 1即可,每次高位遍歷一個(gè)數(shù)據(jù)都要進(jìn)行重新計(jì)算是數(shù)據(jù)規(guī)模逐漸龐大,所以必須每次都進(jìn)行模運(yùn)算。在二維數(shù)組中存儲(chǔ)含義:行為位數(shù),列為此位可以從0到k存的數(shù)(這里的k就是進(jìn)制上限),二維數(shù)組儲(chǔ)存的是若最高位(當(dāng)前最高位)是這個(gè)數(shù)那么他可以存在多少個(gè)k好數(shù)
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


總結(jié)

以上是生活随笔為你收集整理的k好数(动态规划)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。