X mod f(x)

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Problem Description

Here is a function f(x):
   int f ( int x ) {
       if ( x == 0 ) return 0;
       return f ( x / 10 ) + x % 10;
   }

   Now, you want to know, in a given interval [A, B] (1 <= A <= B <= 109), how many integer x that mod f(x) equal to 0.

Input

   The first line has an integer T (1 <= T <= 50), indicate the number of test cases.
   Each test case has two integers A, B.

Output

   For each test case, output only one line containing the case number and an integer indicated the number of x.

Sample Input

21 10

11 20

Sample Output

Case 1: 10

Case 2: 3

————————————————————————切割线—————————————————————

记忆化搜索:

数据范围是10的9次方。数位和最大为9*9=81,枚举数位和

每次要维护:pos维数,当前数位和a。枚举的数位和b。当前的模mo。有无上限e

dp [pos] [a] [b] [mo];

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<cmath>
#include<cstdlib>
#include<cctype>
#define inf 0x3f3f3f3f
#define maxn 10000
typedef long long LL;
using namespace std;
int dp[11][82][82][82];
int num[11],pos,n,m;
int dfs(int pos,int a,int b,int mo,int e)
{if(pos==-1) return a==b&&!mo;if(!e&&dp[pos][a][b][mo]!=-1) return dp[pos][a][b][mo];int end=e?num[pos]:9;int sum=0;for(int i=0;i<=end;i++){sum+=dfs(pos-1,a+i,b,(mo*10+i)%b,e&&i==end);}return e?sum:dp[pos][a][b][mo]=sum;
}
void Init(int x)
{pos=0;while(x){num[pos++]=x%10;x/=10;}
}
int cal(int x)
{Init(x);int res=0;for(int i=1;i<=81;i++){res+=dfs(pos-1,0,i,0,1);}return res;
}
int main()
{int t,iCase=1;memset(dp,-1,sizeof dp);cin>>t;while(t--){scanf("%d%d",&m,&n);printf("Case %d: %d\n",iCase++,cal(n)-cal(m-1));}return 0;
}

转载于:https://www.cnblogs.com/bhlsheji/p/5346471.html

HDU 4389——X mod f(x)(数位DP)相关推荐

  1. hdu 4389 X mod f(x) (数位dp||打表)

    ///打表 # include <algorithm> # include <stdio.h> # include <stdlib.h> # include < ...

  2. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  3. 【HDU4734】F(x) 数位DP

    题目描述 For a decimal number x with n digits (A[n]A[n-1]A[n-2] - A[2]A[1]), we define its weight as F(x ...

  4. (HDU - 3709)Balanced Number(数位DP)

    题目链接:Problem - 3709 题意:给定区间[a,b],求区间内平衡数的个数.所谓平衡数即有一位做平衡点,左右两边数字的力矩相等. 分析,这道题我们直接对平衡点进行枚举即可,然后分别求出来每 ...

  5. hdu 5435 A serious math problem 数位dp

    问题描述 小俊很喜欢数学,现在他要给你出一道严肃的数学题. 定义 FxF[x] 为x在十进制表示下各位数字的异或和,例如F1234 1 xor 2 xor 3 xor 4 4F(1234) = 1 x ...

  6. HDU 4352 XHXJ's LIS(*数位DP 记忆化搜索 待整理)

    XHXJ's LIS HDU - 4352 #define xhxj (Xin Hang senior sister(学姐))  If you do not know xhxj, then caref ...

  7. hdu4389 Xmod f(x) 数位DP

    题意:求区间[a, b]之间有多少个数是xmode(x各位数)之和为0. 分析:发现自己数位DP好弱,不仅参考别人思路,而且自己敲代码还WA到吐血,归根到底是自己还没有 理解这道题的具体思路 1.这道 ...

  8. HDU 5598 GTW likes czf(数位dp)

    题意: 给出g,t,l,r≤9×1018,在g,t随机选一个数X与[l,r]区间的数随机选一个Y做X@Y运算 给出g,t, l, r \leq 9\times 10^{18}, 在g,t随机选一个数X ...

  9. HDU 3943 K-th Nya Number(数位DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3943 题目大意:求出区间 (P,Q] 中找到第K个满足条件的数,条件是该数包含X个4和Y个7 Samp ...

最新文章

  1. AI公司融了1500万美元,却引来LeCun「嘲讽三连」,还要出书调侃CEO?
  2. magento 多语言 ,后台手工更改方法
  3. 打工人,今年双十一你刷啥?
  4. easyui-treegrid移除树节点出错
  5. ORACLE告警日志
  6. opengl加载多个3ds模型失败记
  7. java文本库,自定义文本库
  8. c++面试准备之螺旋队列
  9. c/c++整理--c++面向对象(2)
  10. 【转载】COM 组件设计与应用(二)——GUID 和 接口
  11. Win10 代码行数统计工具CLOC的安装和使用
  12. mysql基础入门(参照b站黑马程序员整理)
  13. love~LBJ,奥布莱恩神杯3
  14. 马斯克11天强吞推特,全新商业帝国拼图完成
  15. Java并发 JUC 一文快速入门
  16. 美国近年来推进“新基建”的布局及启示
  17. 【PWM】从stm32到pwm到OLED屏幕调光到晚上不要玩手机
  18. 镭速(Raysync)文件传输高可用安装部署介绍!
  19. openlayer3.0隐藏地图右下角的attribution控件图标
  20. 80%的人分不清传感网与物联网的区别,这二者之间的具体区别到底是什么?

热门文章

  1. a4如何打印双面小册子_怎样将十几几十页的长文件文档打印成A4纸对折的小册子?...
  2. Hue中Sqoop导数报错Could not load db driver class: com.mysql.jdbc.Driver
  3. [云计算]网线的标签格式
  4. @ 添加属性(属性注入)
  5. 破解云数据库MongoDB运行变慢指南
  6. Python的条件判断与循环样例
  7. 国产杀毒软件连续因“作弊”遭全球权威评测机构指责
  8. 由SELECT ... FROM ... FOR UPDATE想到的
  9. 利用光盘恢复grub引导器
  10. network-opt 优化网络拓扑结构