Investigating Div-Sum Property

UVA - 11361

题目传送门

题目大意:输入三个数a,b,k,问从a到b中有多少个数满足数字能够整除k,并且其数位和也能整除k。

解决方法:数位DP的模板题,Dp[x]表示在不超过x的数中满足条件的输的个数,借白书上的讲解,假设x为3212,若要求dp[3212],我们可以将其分为[000,999],[1000,1999],[2000,2999],[3000,3212]([3000,3099],[3100,3199],[3200,3212]([3200,3209],[3210,3212](3210,3211,3212))),因此我们可以得出for(int i=0;i<=ub;i++) { ans+=dfs(pos-1,(m1+i)%k,(m2*10+i)%k,limit&&(i==ub)); }。

AC代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
int C[15];
int dp[15][120][120];
int a,b,k;
ll dfs(int pos,int m1,int m2,bool limit)
{if(pos==0){if(m1==0&&m2==0)return 1;elsereturn 0;}if(!limit&&dp[pos][m1][m2]>=0)return dp[pos][m1][m2];int ub;if(limit)ub=C[pos];elseub=9;ll ans=0;for(int i=0;i<=ub;i++){ans+=dfs(pos-1,(m1+i)%k,(m2*10+i)%k,limit&&(i==ub));}return dp[pos][m1][m2]=ans;
}
ll getC(int x)
{int cnt=0;while(x){C[++cnt]=x%10;x=x/10;}memset(dp,-1,sizeof(dp));return dfs(cnt,0,0,1);
}
int main()
{//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int T;cin>>T;while(T--){cin>>a>>b>>k;if(k>=83)cout<<0<<endl;else {ll ans=getC(b)-getC(a-1);cout<<ans<<endl;}}return 0;
}

Investigating Div-Sum Property【数位DP】相关推荐

  1. UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)

    题目:https://vjudge.net/problem/UVA-11361 思路:数位dp,用记忆化搜索写,dp[pos][i][j][limit] 代表剩余有pos位,每位上的数字和模k 等于i ...

  2. Educational Codeforces Round 53: E. Segment Sum(数位DP)

    题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 思路: 明显的数位DP了,套路都一样,不过这道题是记权值而不是满足条件的数字个数,所 ...

  3. Codeforces Round #387 (Div. 2) 747F(数位DP)

    题目大意 给出整数k和t,需要产生一个满足以下要求的第k个十六进制数 即十六进制数每一位上的数出现的次数不超过t 首先我们先这样考虑,如果给你了0~f每个数字可以使用的次数num[i],如何求长度为L ...

  4. 数位dp:Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum

    给出上下界,让你求出其中满足条件:不同的数字的数量不超过k个的数字的总和,答案模998244353,比如123里不同的数字个数为3,113里不同的数字个数为2,111里不同的数字个数为1. 跟普通的数 ...

  5. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)DCount The Bits(dp/数位dp)

    D Count The Bits 题意: 输入k,b(1≤k≤1000,1≤b≤128);k,b(1\leq k\leq 1000,1\leq b\leq128);k,b(1≤k≤1000,1≤b≤1 ...

  6. 数位dp ---- 2020 icpc 上海 Sum of Log(枚举高位的二进制数位dp)

    题目链接 题目大意 : 解题思路: 这里有个很核心的地方就是log2(i+j)\text{log2(i+j)}log2(i+j)本质上就是看看i+j\text{i+j}i+j的二进制高位在哪里? 那么 ...

  7. 2020ICPC(上海) - Sum of Log(数位dp)

    题目链接:点击查看 题目大意:给出 X 和 Y,求  题目分析:因为涉及到了位运算且看似可以递推,所以考虑数位dp,因为统计答案时的 i 和 j 的与为 0,所以 i + j = i & j, ...

  8. 解题报告 (十四) 数位DP

    文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...

  9. [数位dp] spoj 10738 Ra-One Numbers

    题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...

最新文章

  1. fpga数据位宽截取_FPGA信号截位策略研究
  2. android adb命令
  3. java、上转型对象
  4. 利用 Bootstrap 进行快速 Web 开发
  5. php ibm mq,php linux IBM MQ安装以及php对接
  6. index.html图片弹窗,原生javascript实现图片弹窗交互效果
  7. java resp req_java request和response区别
  8. 最全知识点总结!| 大数据学习路线指南
  9. poj 3468 Splay 树
  10. 快捷方便的对js文件进行语法检查。
  11. python是什么-什么是Python?最全的python百科
  12. android message to iphone,这款应用可以将苹果的iMessage带到安卓系统
  13. 那些让人忍不住推荐的思维导图软件
  14. 史上最全后端技术介绍
  15. safari快捷图标不见了_桌面图标不见了怎么办?这里有妙招
  16. Smartbi报表工具二次开发和集成能力怎么样?
  17. 项目3-分数类中的运算符重载
  18. 16nm粒径的规则球形纳米金粒AuNPs-CPE-香兰素/Tf-金纳米海胆的制备方法
  19. arcengine-栅格数据详解
  20. 计算机科学与技术有剪辑吗,计算机科学与技术学院第七届“微剪辑大赛”

热门文章

  1. 考教育统计与测量可以带哪种计算机,《教育统计与测量》练习题库及答案
  2. ise的时钟ip核_Vivado CIC IP核滤波器详解(一)
  3. es6去除重复项_Excel的去除重复项你真的明白原理吗?浅尝去除重复项的函数奥秘...
  4. android adb apk包名,ADB命令简单使用--查看包名、activity等
  5. java 0 255_java – 什么(float)(par4 16255)/ 255.0F;意思?
  6. java 输入16进制_尝试使用十六进制输入来使用小端和大端
  7. layui 分页ajax,实现Ajax异步的layui分页
  8. linux进程增删改查,iptables的增删改查
  9. 运行shell脚本时怎么知道jdk路径_Shell写脚本关于ssh执行jar包,需要刷新JDK路径的问题...
  10. 详解优酷视频质量评价体系