题意:

一个如果称作是漂亮数,当且仅当满足:

每一位上的数字是【1,9】,从高到时低数字大小降序,且有di%dj=0(i<j) 例:931

给一个区间【L,R】,问这个区间里有多少个漂亮数。

1≤L≤R≤109

思路:

漂亮数一看就很少。可以直接构造。

哎,,,用了DP+构造,写了好久。。。其实很简单的一个DFS构造就行了。

过些天补上代码。先贴冗长代码~

代码:

int T,L,R;
int wei;
int ans1,ans2,ans;
int d[15], w[15];
int dp[15][15]; int calc(int x){
int cn=0;
while(x){
x/=10;
++cn;
}
return cn;
} void dfs(int pos,bool state){
if(pos>wei){
++ans;
return;
}
if(pos==1){
if(state){
rep(i,1,d[pos]){
w[pos]=i;
dfs(pos+1,i==d[pos]);
}
}else{
rep(i,1,9){
w[pos]=i;
dfs(pos+1,state);
}
}
}else{
if(state){
rep(i,1,d[pos]){
if(w[pos-1]%i==0){
w[pos]=i;
dfs(pos+1,i==d[pos]);
}
}
}else{
rep(i,1,9){
if(w[pos-1]%i==0){
w[pos]=i;
dfs(pos+1,state);
}
}
}
}
} int main(){ cin>>T;
while(T--){
scanf("%d%d",&L,&R); L--;
int tempL=L;
wei=calc(L);
rep2(i,wei,1){
d[i]=(L%10);
L/=10;
}
ans=0;
if(tempL==0){
ans=0;
}else{
dfs(1,true);
}
ans1=ans; mem(dp,0);
rep(i,1,9) dp[1][i]=1;
rep(i,2,wei-1){
rep(j,1,9){
rep(k,1,9){
if(j%k==0){
dp[i][j]+=dp[i-1][k];
}
}
}
}
rep(i,1,wei-1){
rep(j,1,9) ans1+=dp[i][j];
} wei=calc(R);
rep2(i,wei,1){
d[i]=(R%10);
R/=10;
}
ans=0;
dfs(1,true);
ans2=ans; mem(dp,0);
rep(i,1,9) dp[1][i]=1;
rep(i,2,wei-1){
rep(j,1,9){
rep(k,1,9){
if(j%k==0){
dp[i][j]+=dp[i-1][k];
}
}
}
}
rep(i,1,wei-1){
rep(j,1,9) ans2+=dp[i][j];
} printf("%d\n",ans2-ans1);
} return 0;
}

hdu 5179 beautiful number(构造,,,,)的更多相关文章

  1. hdu 5179 beautiful number

    beautiful number 问题描述 令 A = \sum_{i=1}^{n}a_i * {10}^{n-i}(1\leq a_i \leq 9)A=∑​i=1​n​​a​i​​∗10​n−i​ ...

  2. HDU 5179 beautiful number (数位dp / 暴力打表 / dfs)

    beautiful number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU 5179 beautiful number 数位dp

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5179 bc(中文): http://bestcoder.hdu.edu.cn/contes ...

  4. hdu 5179 beautiful number(数位dp)

    原题链接 题意:求[l,r]中高位%低位等于0的数字个数.(不含0)分析:此题有三种方法.1.暴搜,毕竟最多才10个位.2.数位dp,预处理好整体的,再处理细节. dp[i][j]表示第i位上的数字位 ...

  5. 【HDOJ】5179 beautiful number

    DFS. /* 5179 */ #include <iostream> #include <algorithm> #include <map> #include & ...

  6. hdu 5898 odd-even number 数位DP

    传送门:hdu 5898 odd-even number 思路:数位DP,套着数位DP的模板搞一发就可以了不过要注意前导0的处理,dp[pos][pre][status][ze] pos:当前处理的位 ...

  7. hdu 2665 Kth number

    划分树 /* HDU 2665 Kth number 划分树 */ #include<stdio.h> #include<iostream> #include<strin ...

  8. Codeforces 55D Beautiful Number

    Codeforces 55D Beautiful Number a positive integer number is beautiful if and only if it is divisibl ...

  9. hdu 4670 Cube number on a tree(点分治)

    Cube number on a tree Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/ ...

随机推荐

  1. pygame简单小游戏 移动小球

    键盘a,d,s,w移动小球 需要安装pygame cmd里输入pip install pygame import pygame import sys pygame.init() screen = py ...

  2. PHP脚本设置及获取进程名

    今天来学习的是两个非常简单的函数,一个可以用来设置我们执行脚本时运行的进程名.而另一个就是简单的获取当前运行的进程名.这两个函数对于大量的脚本运行代码有很大的作用,比如我们需要 kill 掉某个进程时 ...

  3. jquery播放视频事件

    $('video').trigger('play'); $('video').trigger('pause'); 判断video播放器的播放状态,并进行切换播放,需要这样 let video = $( ...

  4. js复制功能代码

    js复制代码: http://www.clipboardjs.cn/

  5. PHP7兼容mysql_connect的方法

    在php7版本的时候,mysql_connect已经不再被支持了,本文将讲述在代码层面实现php7兼容mysql系列,mysql_connect等操作. PHP7不再兼容mysql系列函数,入mysq ...

  6. Shell系列(5)- 输出输入重定向及wc命令

    输出重定向: 在Linux当中,0代表输入:1代表正确输出:2代表错误输出 类型 符号 作用 正确输出重定向 命令 > 文件 以覆盖得方式,把命令得正确输出,输出到指定文件或设备当中 命令 &g ...

  7. MNIST手写数字识别:卷积神经网络

    代码 import torch from torchvision import datasets from torch.utils.data import DataLoader import torc ...

  8. 事项同步事项编码(mt_code)长度超过数据库限制的varchar(32)线上问题

    改下长度限制重新同步下,可以恢复正常!

  9. 通宵修复BUG的思考

    HYH.LXJ昨晚通宵修复11月版需求的bug,因为代码提到测试环境后,阻碍了一个分行进行验收测试,业务人员直接把问题反馈给了上级领导,压力下来,项目组就把问题重视起来. 对于通宵加班这件事,应该点赞 ...

  10. Nginx禁止ip方式访问80、443端口

    在nginx.conf配置文件中 include /etc/nginx/conf.d/*.conf; 之前加入以下内容 server { listen 80 default; listen 443 d ...