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;
}

HDU 4389——X mod f(x)(数位DP)的更多相关文章

  1. hdu 4389 X mod f(x) 数位DP

    思路: 每次枚举数字和也就是取模的f(x),这样方便计算. 其他就是基本的数位Dp了. 代码如下: #include<iostream> #include<stdio.h> # ...

  2. HDU - 4389 X mod f(x)(数位dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 为[A,B] 区间内的数能刚好被其位数和整除的数有多少个. 分析 典型的数位dp...比赛时想不出状 ...

  3. HDU 4389 X mod f(x)

    题意:求[A,B]内有多少个数,满足x % f(x) == 0. 解法:数位DP.转化为ans = solve(b) - solve(a - 1).设dp[i][sum][mod][r]表示长度为i, ...

  4. HDU4389:X mod f(x)(数位DP)

    Problem Description Here is a function f(x): int f ( int x ) { if ( x == 0 ) return 0; return f ( x ...

  5. HDU 4734 F(x) ★(数位DP)

    题意 一个整数 (AnAn-1An-2 ... A2A1), 定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,求[0..B]内有多少 ...

  6. HDOJ 4389 X mod f(x)

    数位DP........ X mod f(x) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  7. 【HDU 3709】 Balanced Number (数位DP)

    Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...

  8. HDU 5642 King's Order【数位dp】

    题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003 题意: 求长度为n的序列 ...

  9. HDU - 4352 - XHXJ's LIS(数位DP)

    链接: https://vjudge.net/problem/HDU-4352 题意: a 到 b中一个数组成递增子序列长度等于k的数的个数 思路: 因为只有10个数,使用二进制维护一个递增序列,每次 ...

随机推荐

  1. C++笔记1: 单例模式。(一个简单的设计模式在C++中复杂出翔。。)

    C++ 如果用指针new一个单例,内存不容易释放,所以Java和C#等语言中的单例模式在C++不适用... C++中,new申请的内存必须由delete释放,例如: Point p1; Point * ...

  2. nexus3添加第三方jar

    最近在看maven的打包及管理,然後就看到nexus,自己在安裝的時候就下載了最新版的nexus-3.2.0-01-win64,按照文档部署后启动,浏览.之前一致使用的是2.0的,所以还是需要导出点点 ...

  3. 修改tabbar 字体颜色

    NSDictionary *seletedTextAttrs = @{NSForegroundColorAttributeName:[UIColor orangeColor]}; 修改tabbar 字 ...

  4. 在windows下创建.gitignore文件

    1.使用另存为的方式   2.在win7下,文件名输入 ”.gitignore.“ http://hbiao68.iteye.com/blog/2055496 http://lyhopq.github ...

  5. discuz 门户栏目URL跳转异常的问题

    “SEO设置-URL静态化”的问题.

  6. 我新买的红米手机,新浪和360浏览器都能进,也能看电视,就是不能上手机QQ和微信

    1.请您在桌面下.点击手菜单键-全局搜索,输入网络助手,点击流量排行,点击批量联网控制,查看该软件下(不能上网的应用)wifi和流量2G/3G下方的选项是否都勾选的.如果没有勾选,请您勾选. 2:仍然 ...

  7. 《unix网络编程》笔记

    inet_pton和inetntop函数.字母p和n代表presentation和numeric.地址的表达presentation格式通常是ASCIL串,数值(numeric)格式则是存在于套接字地 ...

  8. java学习之多生产者和多消费者

    在上一节当中我们说道了,java多线程当中单个消费者对应单个生产者的关系.这个时候有几个点需要注意一下,第一个就是把if判断flag的语句改成while这样能够避免,比如如果我们这个时候用if的话判断 ...

  9. 转《本文为腾讯Bugly原创文章 ---全站 HTTPS 来了》

    最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护.仔细观察,会发现这些网站已经全站使用 HTTPS.同时,iOS ...

  10. HDOJ/HDU Tempter of the Bone(深搜+奇偶性剪枝)

    Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...