uva11361 - Investigating Div-Sum Property 数位统计DP

uva1451 - Average 单调队列维护下凸曲线 A DNA sequence consists of four letters, A, C, G, and T. The GC-ratio of a DNA sequence is the number of Cs and Gs of the sequence divided by the length of the sequence. GC-ratio is important in gene 阅读详情

Aninteger is divisible by 3 if the sum of its digits is also divisible by 3. Forexample, 3702 is divisible by 3 and 12(3+7+0+2) is also divisible by 3. Thisproperty also holds for the integer 9.

Inthis problem, we will investigate this property for other integers.

Input

The first line of input is an integer T(T<100) thatindicates the number of test cases. Each case is a line containing 3 positiveintegers A, B and K.1 <= A <= B < 2^31 and0<K<10000.

Output

For each case,output the number of integers in the range [A, B] which is divisible by K and the sumof its digits is also divisible by K.

Sample Input

Output for Sample Input

3

1 20 1

1 20 2

1 1000 4

20

5

64


  区间[A,B]中有多少个数满足:这个数能被K整除并且这个数的所有位之和能被K整除。

  用dp[i][j][k]表示i位的数有多少个每位和被K除余j,这个数被K除余K。比如i=3的时候就是000-999,i=4的时候是0000-9999...

  如果dp求出来了就好做了,区间的话只要求出[0,A-1],[0,B]相减就可以了。对于某个数A,比如3210,每位和被K除余m,这个数被K除余n。那么最高位取0,1,2的时候,后面三位是可以任取的,因此一定有一个dp[3][m'][n']与之对应,当最高位取3的时候,接着递归210,(m-3%K+K)%K,(n-3*10^3%K+K)%K。

  dp也可以用记忆化搜索,也可以递推求,道理是一样的,位数从小到大,相当于每次在最高位多加一位。dp[i][j][k]+=dp[i-1][(j-x%K+K)%K][(k-x*Pow(i-1)%K+K)%K],(0<=x<=9)。

  余数递推的时候要注意小于0的情况。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
int T,A,B,K,L,dp[12][112][10010];//位数,每位和对K余数,这个数对K余数
int bit(int n,int &m){  //m是顺便算出n的最高位
    int ret=0;
    while(n){
        m=n;
        ret++;
        n/=10;
    }
    return ret;
}
int Pow(int n){
    int ret=1;
    for(int i=0;i<n;i++) ret*=10;
    return ret;
}
void init(){
    memset(dp,0,sizeof(dp));
    dp[0][0][0]=1;
    for(int i=1;i<=L;i++)
        for(int j=0;j<K&&j<=i*9;j++)
            for(int k=0;k<K;k++)
                for(int x=0;x<=9;x++) dp[i][j][k]+=dp[i-1][(j-x%K+K)%K][(k-x*Pow(i-1)%K+K)%K];
}
int solve(int n,int k1,int k2){ //[0,n) 每位和除K余k1,这个数除K余k2 
    int m,p=bit(n,m),ret=0;
    if(!p) return 0;
    for(int i=0;i<m;i++) ret+=dp[p-1][(k1-i%K+K)%K][(k2-i*Pow(p-1)%K+K)%K];
    ret+=solve(n%Pow(p-1),(k1-m%K+K)%K,(k2-m*Pow(p-1)%K+K)%K);
    return ret;
}
int main(){
    //freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%d%d%d",&A,&B,&K);
        int ans,t;
        L=max(bit(A,t),bit(B,t));
        if(K>(bit(B,t))*9) ans=0;
        else{
            init();
            ans=solve(B+1,0,0)-solve(A,0,0);
        }
        printf("%d\n",ans);
    }
    return 0;
}


深入理解 DDR5 Bank Group 与并行调度机制 Bank Group架构和并行调度机制,是DDR5性能跃升的核心秘密!理解它们才能写出高效调度程序,设计出性能强劲又稳定的DDR5系统。🎯记住:Bank Group不是简单的分组,而是高速并行的“魔法钥匙”,巧用它,你的DDR5设计将爆发惊人性能! 阅读详情

相关推荐

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

【UVA11361】Investigating Div-Sum Property——数位DP

An integer is divisible by 3 if the sum of its digits is also divisible by 3. For example, 3702 is divisible by 3 and 12(3+7+0+2) is also divisible by 3. This property also holds for the integer 9. I

绝尘 1196

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

11361 - Investigating Div-Sum Property

#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define clr(a,v) memset(a,v,sizeof(a))

BryantMark 612

浅谈功放PA的VBW

摘要:VBW(视频带宽)反映功放的宽带非线性特性和记忆效应,影响数字预失真(DPD)校正能力。其成因是功放管寄生参数(如Cshunt和Leff)形成低频并联谐振,导致供电臂阻抗增大,引发电压波动和记忆效应。测试方法包括双音IM3/IM5测试(以两侧IM3差≥3dB定义VBW)和魔T测试(通过S21曲线测量谐振频率)。改善措施主要是减小Leff,如采用双电源平衡馈电。VBW指标要求通常为魔T测试结果大于3倍信号带宽,以确保功放线性度。

weixin_49761275的博客 1574

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

uva 11361 Investigating Div-Sum Property

很容易看出来是个数位dp,需要考虑的是怎样记录状态需要保证当前状态能被唯一确定才行 看了别人的题解才想到的 考虑到对于一个数x,x%k的值会等于 (x的个位*1)%k + (x的十位*10)%k。。。。 所以保存的状态前面可以存入一个数modk的值 题意还要求了和也要为k的倍数所以再加一个状态为和%k的值 这样 dp[len][x][sum]就能表示一个确定的状态转移

431

验证方法、符合性方法与设计保证的关系

未来,随着适航标准和工程实践的不断演进,验证与符合性方法将持续优化,以应对日益复杂的系统设计需求。设计保证过程中的验证活动具有双重作用,既用于设计过程的质量控制和风险管理,又作为适航符合性方法的重要支持材料。在未来的航空电子系统开发中,进一步优化设计保证与验证活动的协同作用,将有助于应对日益复杂的工程挑战,推动航空安全技术的发展。为了全面理解这二者之间的关系,本章将系统说明设计保证过程中的验证活动如何既服务于设计保证,又作为符合性方法中的核心证明材料。最终,通过功能测试和环境测试验证硬件的实际性能。

qq_41854911的博客 554

Investigating Div-Sum Property UVA - 11361

#include&lt;bits/stdc++.h&gt; using namespace std; #define rep(i,a,b) for(int i=a;i&lt;b;i++) typedef long long ll; bool is_prime(int x){if(x&lt;2)return false;int m=sqrt(x+0.5);rep(i,2,m+1)if(x%i...

海绵的博客 248

pdb文件删除杂原子 HETATM;保留或去除水分子

这样操作水分子也会跟着删除,如果需要保留水分子。

weixin_42357472的博客 2645

在 Linux 64 位上遭遇 Signal 7 与 ST22 SYSTEM_CORE_DUMPED:从 es/implementation=std 到 /dev/shm 的一套落地排查法

摘要: Linux 64位SAP系统出现SYSTEM_CORE_DUMPED和Signal 7(对应SIGBUS)错误时,核心问题是进程因共享内存资源异常被操作系统强制终止。主要诱因包括:1)/dev/shm的tmpfs默认容量不足(通常仅占物理内存50%);2)SAP内存管理参数es/implementation=map在64位场景下的敏感性。解决方案应双管齐下:在实例profile设置es/implementation=std以降低对tmpfs的依赖,同时按(RAM+Swap)*75%重新配置/dev/

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

UVa 11361 Investigating Div-Sum Property

这道题居然提交了十次才过....期间小问题不断。思路的话基本是《训练指南》里面来的,不过有几个小问题需要注意一下。第一,当K在大于100的情况下,就直接输出0就可以了。因为a,b不超过2^31,可以估算出a,b最多十位十进制数,那么每位最大为9,所以各个数字之和是不可能超过100的,那么个数字之和为模K为0的条件是永远不可能到达的。       还有一点是,当剩余数字d=0时,当且仅当m1和m2

姚灯灯的专栏 1196

Android性能分析深度指南:Perfetto工具全面解析

本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。

郑伟强dev的专栏 144

UVa 11361 Investigating Div-Sum Property (数位DP)

UVa 11361 Investigating Div-Sum Property题目大意:给定a,b,k三个正整数,统计在[a,b]之间的整数n中,有多少n自身是k的倍数,且n的各个数字(十进制)之和也是k的倍数.(1⩽a⩽b⩽2311\leqslant a\leqslant b\leqslant 2^{31})题目分析:这是一道典型的数位DP题. n非常大,若是直接枚举的话会超时,考虑利用加法原

Continue 559

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

B - Investigating Div-Sum Property(UVa11361 白皮书114页,数位dp)

B - Investigating Div-Sum Property UVA - 11361 题目描述: 例题6 数字和与倍数 ​ 给定正整数a,b,k 你的任务是在所有满足a<=n<=b的整数n中,统计有多少个满足n自身是k的倍数,且n的各个数字(十进制)之和也是k的倍数?比如当k=7时,322满足条件,因为322和3+...

dengyan1183的博客 213

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Investigating Div-Sum Property UVA11361

思路按照训练指南上说的的递推,table[i][j][k]表示i位数各位数字和对给定数取模为j,数字本身对给定数取模为k的数字个数,最后的统计细节需要注意,要从高位到低位统计,个位要单算。 #include #include #include #include #include #include #include #include #include #inc

霁月难逢 彩云易散 694

Investigating Div-Sum Property UVA - 11361(数位DP) 题解

Investigating Div-Sum Property UVA - 11361(数位DP) 题解

Sega_hsj 's Blog 413

Uva 11361 - Investigating Div-Sum Property(数位DP)

An integer is divisible by 3 if the sum ofits digits is also divisible by 3. For example, 3702 is divisible by 3 and12(3+7+0+2) is also divisible by 3. This property also holds for the integer 9.In th...

Change the world by program. 397

uva 11361 Investigating Div-Sum Property 数位DP

题目:https://uva.onlinejudge.org/external/113/11361.pdf 关键是找到一种循环,同模式的子问题。进而简化问题。 例如 82456;(*表示不确定) work(82456)=  ans( 0****   )+ans(1****)+ans(2****)+...ans(7****)                        +ans(8

便纵有千种风情 626

【数位dp】UVA - 11361 - Investigating Div-Sum Property

经典数位dp!而且这好像是数位dp的套路板子……不需要讨论原来我很头疼的一些边界。 改天用这个板子重做一下原来的一些数位dp题目。 http://blog.youkuaiyun.com/the_useless/article/details/53674906 题目大意: 给定a,b,k三个正整数,统计在[a,b]之间的整数n中,有多少n自身是k的倍数,且n的各个数字(十进制)之和也是k的倍数.(...

weixin_34153893的博客 144

uva11361

此题第二章的例题5由于书上没写程序我就自己做了下。 由于2^31=2147483648所以最大也就10位数字。所以极限情况是数字之和不大于100.那么对于k如果超过100的那么肯定就不存在各位和是它的倍数了。这里就可以剪支,当大于等于100的时候就直接输出0就可以了。 然后按照书上的思想我们设f【x】表示不超过x的非负整数中满足条件的个数,所以我们得到的答案就是f【b】-f【a-1】这一条

lyc 1209

UVA11361 Investigating Div-Sum Property

题目:Investigating Div-Sum Property 思路: 数位dp。 f[i][j][k]表示前i位,和mod K为j,原数mod K为k的方案数。 数位dp当然要dfs转移啦! 转移: ans+=dfs(len-1,((sum+i)%n),((frt*10+i)%n),limit&amp;&amp;(i==c[len])) 代码: #include&lt;bits/std...

iwi 283

Investigating Div-Sum Property【数位DP】

Investigating Div-Sum Property  UVA - 11361  题目传送门 题目大意:输入三个数a,b,k,问从a到b中有多少个数满足数字能够整除k,并且其数位和也能整除k。 解决方法:数位DP的模板题,Dp[x]表示在不超过x的数中满足条件的输的个数,借白书上的讲解,假设x为3212,若要求dp[3212],我们可以将其分为[000,999],[1000,199...

C++的星空 304

Investigating Div-Sum Property

An integer is divisible by 3 if the sum of its digits is also divisible by 3. For example, 3702 is divisible by 3 and 12(3+7+0+2) is also divisible by 3. This property also holds for the integer 9. In this problem, we will investigate this property for oth

qq_44527245的博客 255

uva 11361 - Investigating Div-Sum Property(数位dp)

题目链接:uva 11361 - Investigating Div-Sum Property 题目大意:给出a,b,k,问说在[a,b]这个区间有多少n,满足n整除k,以及n的各个为上的数字之和也整除k。 解题思路:数位dp,dp[i][j][x]表示第i为的时候,n整除k余j,n(以及考虑到的位数)的各个位置上的数字之和整除k余x的情况总数,并且每次要计算上限的临界值。 #inc

不慌不忙、不急不躁 1446

Investigating Div-Sum Property Uva 11361

给定正整数a, b, k 统计在a 那么首先观察,a, b的范围是int类型。 所以说a, b中肯定数字的和不会超过90. 那么k>90的时候显然直接输出0就行了。 然后可以每次都预先处理出一个三维数组 f[i][j][p] 代表的是i长度的数字,各数字之和模k余j,该数模k余p的数字个数 这个很容易 然后算某个数的时候 按位一个一个往后算就行了 #include #i

水 1429
上一篇: uva11806 - Cheerleaders 容斥原理
下一篇: uva1073 - Glenbow Museum
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值