EaShion1994的专栏

问题描述 如果一个自然数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。 代码实现

;const int a=1000000007;long long use[MAX];int luse[MAX];long long sum;int K,L;void refreash();int main(){memset( use,0,sizeof(use) );fill( luse,luse + MAX,1);sum = 0;cin>>K>>L;for( int t = 1; t < L; t++ ){for( int i = 0; i < K; i++ ){for( int j = 0; j < K; j++ ){if( j != i-1 && j != i+1 )use[j] += luse[i];}}refreash();}for( int i = 1; i < K; i++ )sum += luse[i]%a;cout<<sum%a<<endl;return 0;}void refreash(){for( int i = 0; i < K; i++ ){luse[i]=use[i]%a;use[i]=0;}return ;}

人生就像是一场旅行,遇到的既有感人的,

EaShion1994的专栏

相关文章:

你感兴趣的文章:

标签云: