CF497E.Subsequences Return

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

假设 sk(n)s_{k}(n) 表示数字 nn 在 kk 进制下的各位数字之和。例如,s2(5)=s2(1012)=1+0+1=2s_{2}(5)=s_{2}(101_{2})=1+0+1=2,s3(14)=s3(1123)=1+1+2=4s_{3}(14)=s_{3}(112_{3})=1+1+2=4。

定义整数序列 a0,...,an−1a_{0},...,a_{n-1} 为 aj=sk(j)mod⁡ka_{j} = s_{k}(j)\operatorname{mod} k。你的任务是计算序列 a0,...,an−1a_{0},...,a_{n-1} 有多少个不同的子序列。请将结果对 109+710^9+7 取模后输出。

序列 a1,...,aka_{1},...,a_{k} 称为序列 b1,...,blb_{1},...,b_{l} 的一个子序列,如果存在一组下标 1≤i1<...<ik≤l1\leq i_{1}<...<i_{k}\leq l ,使得 a1=bi1,...,ak=bika_{1}=b_{i_1},...,a_{k}=b_{i_k}。特别地,空序列(即不包含任何元素的序列)是任意序列的一个子序列。

输入格式

第一行包含两个用空格分隔的整数 nn 和 kk(1≤n≤10181\leq n\leq 10^{18},2≤k≤302\leq k\leq 30)。

输出格式

输出一行,表示不同子序列的数量,对 109+710^9+7 取模。

输入输出样例

  • 输入#1

    4 2
    

    输出#1

    11
    
  • 输入#2

    7 7
    

    输出#2

    128
    

说明/提示

在第一个样例中,序列 aia_{i} 为 (0,1,1,0)(0,1,1,0)。所有可能的子序列有:

(),(0),(0,0),(0,1),(0,1,0),(0,1,1),(0,1,1,0),(1),(1,0),(1,1),(1,1,0)(),(0),(0,0),(0,1),(0,1,0),(0,1,1),(0,1,1,0),(1),(1,0),(1,1),(1,1,0)。
在第二个样例中,序列 aia_{i} 为 (0,1,2,3,4,5,6)(0,1,2,3,4,5,6)。该序列的所有子序列正好是从 00 到 66 的所有递增序列。显然有 27=1282^{7}=128 个这样的序列。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页