数位 dp 模板题……

题目大意

给你两个数 l,rl,rl,r,求出 l,rl,rl,r 之间所有数的数位和。

什么是数位和?

举个栗子,有一个数 123123123,那么他的数位和,即各个数位的和为 6(1+2+3)6(1+2+3)6(1+2+3)。

考虑求数位和,采用数位 dp(不会请移步P4999)。

简单分析一下。

  • 定义状态:

dpi,jdp_{i,j}dpi,j​:以 jjj 作为最高位的 iii 位数的数字和。

性质:以 xxx 作为最高位的 yyy 位数有 10y−110^{y-1}10y−1 个。

  • 求状态转移方程:

dpi,j=(∑dpi−1,0/1/2/3/4/5/6/7/8/9)+j∗10i−1dp_{i,j}=(\sum{dp_{i-1,0/1/2/3/4/5/6/7/8/9}})+j*10^{i-1}dpi,j​=(∑dpi−1,0/1/2/3/4/5/6/7/8/9​)+j∗10i−1

  • 边界条件:

dp0,0=0dp_{0,0}=0dp0,0​=0

那么接下来就是直接上模板了:

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int mod=1e9+7;
int dp[200][200];
int t;
void init(){
dp[0][0]=0;
for(int i=1;i<=19;i++){
for(int j=0;j<=9;j++){
for(int k=0;k<=9;k++){
dp[i][j]+=dp[i-1][k];
}
int sum=1;
for(int k=1;k<=i-1;k++){
sum*=10;
}
dp[i][j]+=j*sum;
}
}
}
int query(int x){
int num[25]={0},ans=0,sum=0,cnt=0;
while(x!=0){
cnt++;
num[cnt]=x%10;
x/=10;
}
for(int i=cnt;i>=1;i--){
for(int j=0;j<=num[i]-1;j++){
ans+=dp[i][j];
int tmp=1;
for(int k=1;k<=i-1;k++){
tmp=tmp*10;
}
ans+=sum*tmp;
}
sum+=num[i];
}
return (ans+sum);
}
signed main(){
init();
while(1){
int l,r;
cin>>l>>r;
if(l==0&&r==0)return 0;
cout<<query(r)-query(l-1)<<endl;
}
return 0;
}
*/

题解:UVA12517 Digit Sum的更多相关文章

  1. 【题解】Digit Tree

    [题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. ...

  2. (Problem 16)Power digit sum

    215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26. What is the sum of the digits of th ...

  3. Digit sum (第 44 届 ACM/ICPC 亚洲区域赛(上海)网络赛)进制预处理水题

    131072K   A digit sum S_b(n)Sb​(n) is a sum of the base-bb digits of nn. Such as S_{10}(233) = 2 + 3 ...

  4. [LeetCode 题解]:Path Sum

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given a bi ...

  5. 欧拉工程第56题:Powerful digit sum

    题目链接   Java程序 package projecteuler51to60; import java.math.BigInteger; import java.util.Iterator; im ...

  6. project euler 16:Power digit sum

    >>> sum([int(i) for i in str(2**1000)]) 1366 >>>

  7. LeetCode题解39.Combination Sum

    39. Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T ...

  8. PAT甲题题解-1081. Rational Sum (20)-模拟分数计算

    模拟计算一些分数的和,结果以带分数的形式输出注意一些细节即可 #include <iostream> #include <cstdio> #include <algori ...

  9. 《LeetBook》LeetCode题解(1) : Two Sum[E]——哈希Map的应用

    001.Two Sum[E] Two SumE 题目 思路 1双重循环 2 排序 3 Hashmap 1.题目 Given an array of integers, return indices o ...

  10. Project Euler 20 Factorial digit sum( 大数乘法 )

    题意:求出100!的各位数字和. /************************************************************************* > Fil ...

随机推荐

  1. LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中)

    大家好,我是忍者程序员.上一篇文章我们讨论了如何科学地刷题,今天我要带大家深入了解这100道精选题目背后的分类逻辑.作为一名面试官,我希望通过这篇文章,为大家绘制一张完整的算法知识地图. 为什么要按类 ...

  2. Transaction rolled back because it has been marked as rollback-only问题解决

    1.背景 在我们的日常开发中,经常会存在在一个Service层中调用另外一个Service层的方法.比如:我们有一个TaskService,里面有一个execTask方法,且这个方法存在事务,这个方法 ...

  3. Q:在PostgreSQL中跟踪和分析查询日志

    在PostgreSQL中,跟踪和分析查询日志是排查性能瓶颈的重要步骤. 通过查看和分析查询日志,我们可以了解哪些查询在执行时遇到了问题,例如执行时间过长.资源消耗过大等. 以下是一些建议和步骤,帮助你 ...

  4. Flink基础Source配置

    一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.代码demo FlinkBaseSource.java package net.xd ...

  5. dp 常见套路总结

    dp 里存的东西值域不大的时候,考虑把状态中某一维和 dp 里存的东西交换,进行 dp. 连续段 dp 时,考虑把连续段化为对每个元素考虑接上一个元素. dp 里的值可能存在某个上界,超过这个值一定不 ...

  6. 用python做时间序列预测四:*稳/非*稳时间序列

    上篇文章简单提到了应该用*稳时间序列做预测,本文将介绍具体概念和原因. Stationary Series *稳序列 *稳序列有三个基本标准: 1.序列的均值(mean)不应该是时间的函数(意思是不应 ...

  7. svn提示Node remains in conflict的解决办法

    svn 更新提示Node remains in conflict 这个时候不管svn up多少次,都无法更新到最新的内容 解决办法: svn revert --depth=infinity * 其中* ...

  8. jQuery ajax 文件上传 Request Headers 缺少 boundary

    原文地址: https://blog.jijian.link/2020-07-28/jquery-ajax-upload-file/ 一般上传方式 const file = document.getE ...

  9. Java的volatile和sychronized底层实现

    1. 概览 从Java代码级别到硬件级别各层都是如何实现的 2. Synchronized 2.1 字节码层面 使用javap -verbose <class文件>可以查看到字节码信息,其 ...

  10. zookeeper windows 安装

    下载 zookeeper 下载地址为: https://zookeeper.apache.org/releases.html. 选择一个地址点击版本下载: 配置 下载后解压到指定磁盘的 zookeep ...