首页 > 其他分享 >AT_tdpc_number 数 题解

AT_tdpc_number 数 题解

时间:2024-07-02 20:21:42浏览次数:20  
标签:题解 ll number long tdpc 10010 define

题目传送门

前置知识

数位 DP | 记忆化搜索

解法

本题的提交在 luogu 上挂了,建议去 原站Vjudge 上提交。

基础数位 DP ,记录当前位置、已填的数码之和,接着记忆化搜索即可。

需要注意的是 \(0 \bmod d=0\),如果写得不太好看(未处理前导零)的话需要减去其贡献。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define ull unsigned long long
#define sort stable_sort 
#define endl '\n'
const ll p=1000000007;
ll a[10010],f[10010][110];
char k[10010];
ll dfs(ll pos,ll pre,ll lead,ll limit,ll d)
{
	if(pos<=0)
	{
		return (pre==0);
	}
	if(f[pos][pre]!=-1&&lead==0&&limit==0)
	{
		return f[pos][pre];
	}
	ll ans=0,maxx=(limit==0)?9:a[pos],i;
	for(i=0;i<=maxx;i++)
	{
		ans=(ans+dfs(pos-1,(pre+i)%d,(i==0)*lead,(i==maxx)*limit,d))%p;
	}
	return (lead==0&&limit==0)?f[pos][pre]=ans:ans;
}
ll ask(ll len,ll d)
{
	memset(f,-1,sizeof(f));
	return dfs(len,0,1,1,d);
}
int main()
{
	ll d,len,i;
	scanf("%lld%s",&d,k+1);
	len=strlen(k+1);
	reverse(k+1,k+1+len);
	for(i=1;i<=len;i++)
	{
		a[i]=k[i]-'0';
	}
	printf("%lld\n",(ask(len,d)-1+p)%p);
	return 0;
}

后记

多倍经验: AT_dp_s Digit Sum

标签:题解,ll,number,long,tdpc,10010,define
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18280478

相关文章

  • SP8177 JZPEXT - Beautiful numbers EXTREME 题解
    题目传送门前置知识数位DP|同余解法同余的传递性:若\(\begin{cases}a,b\in\mathbf{Z}\\p,q\in\mathbb{N}^{*}\\q|p\end{cases}\),则当\(a\equivb\pmod{p}\)时有\(a\equivb\pmod{q}\)。故在本题中\(\bmod\)各非零数码均等于\(0\)等价于\(\bmod\)各......
  • P5324 题解
    题意给定一个数列\(\{a_n\}\),定义一次删除操作为:假设当前序列长度为\(len\),删除序列中所有等于\(len\)的数。现在有\(m\)个操作,每次操作为单点修改或整体加减。每次操作完后,你需要修改若干个数,使得序列能够在若干次删除操作后被删空,求最小修改次数。数据范围:\(1\len,m......
  • 复旦大学2023--2024学年第二学期(23级)高等代数II期末考试第七大题解答
    七、(10分) 设$V$是$n$阶实矩阵全体构成的实线性空间, $A$是$n$阶正定实对称阵.对任意的$X,Y\inV$,定义二元函数$(X,Y)=\mathrm{tr}(XAY')$.(1)求证:$(-,-)$是$V$上的一个内积.(2)在上述内积下,$V$成为一个欧氏空间. 设$P,Q\inV$,$V$上的线性算子$......
  • bigNumber的部分使用方法与属性
    场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是://intint:['-2147483648','2147483647'],//floatfloat:['-340282346638528860000000000000000000000','340282346638......
  • abc360 E 题解
     E对于位置2~n,它们的概率是相等的。n*n个(x,y)对。其中x可以等于y。 对于x/y,y的逆元rev(y)为mul(y,mod-2)。加、减、乘、除都可以做。比如48/9和16/3的结果是一样的,48*rev(9)%mod=16*rev(3)%mod。比如3*rev(2)%mod=(rev(2)+rev(2)+rev(2))%mod. 对于每次操作,有多少......
  • 十四、Redis应用问题解决
    文章目录一、缓存穿透1.1问题描述1.2解决方案二、缓存击穿2.1问题描述2.2解决方案三、缓存雪崩3.1问题描述3.2解决方案四、分布式锁4.1问题描述4.2解决方案:使用redis实现分布式锁4.3编写代码4.4优化之设置锁的过期时间4.5优化之UUID防误删4.6优化之LUA脚......
  • P10676 『STA - R6』b20 题解
    题目传送门简单题,主要考察字符串。首先输入一个char类型的数组,然后输入粉丝的数量,最后直接输出数组的第一个以及粉丝的数量即可。温馨提示:提交此题时请务必将数组开大,否则你可能会获得\(90\)分高分。//『STA-R6』b20//codeby:cq_irritater//time:2024/06/30#in......
  • 文献翻译1——Hill numbers在基于DNA的多样性分析中的应用指南
    英文题目:AguidetotheapplicationofHillnumberstoDNA‐baseddiversityanalyses中文题目:Hillnumbers在基于DNA的多样性分析中的应用指南摘要:随着DNA测序技术的发展,我们测定生物多样性的方式正在发生翻天覆地的变化(aradicalshift)。人们也越来越意识到,有必要在......
  • P6754 [BalticOI 2013 Day1] Palindrome-Free Numbers
    数据范围一眼数位dp。关键条件为如果一个数字串的一个长度大于 11 的子串也为回文串的话,那么我们也定义这个数字串为回文串。仔细思考发现一旦两个连续的数相同(偶回文)或两个数隔一个数相同(奇回文)都是回文,所以要保证连续三个数不相同,记录前两位即可。注意事项:1.前导零不应为0......
  • 【秋招突围】2024届秋招笔试-科大讯飞笔试题-03-三语言题解(Java/Cpp/Python)
    ......