题意:

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

每一位上的数字是【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. 机器学*——K*邻算法(KNN)

    1 前言 Kjin邻法(k-nearest neighbors,KNN)是一种基本的机器学*方法,采用类似"物以类聚,人以群分"的思想.比如,判断一个人的人品,只需观察他来往最密切 ...

  2. 学习PHP中的任意精度扩展函数

    今天来学习的是关于数学方面的第一个扩展.对于数学操作来说,无非就是那些各种各样的数学运算,当然,整个程序软件的开发过程中,数学运算也是最基础最根本的东西之一.不管你是学得什么专业,到最后基本上都会要学 ...

  3. dedecms编辑器不能复制word格式的处理方法

    在word文档中编辑一篇文章,格式段落都整理好后,粘贴到dede编辑器里面却发现,格式都无效了,可能dede有自己的打算,比如这样可以文章字体大小统一,样色统一,整体比较整洁.但是用惯了word编辑文 ...

  4. 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础 | 百篇博客分析OpenHarmony源码 | v68.01

    子曰:"质胜文则野,文胜质则史.文质彬彬,然后君子." <论语>:雍也篇 百篇博客系列篇.本篇为: v68.xx 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基 ...

  5. SVN--代码状态检查(图文并茂)

    接下来,我们用客户端去检出代码,在桌面空白处单击右键,选择SVN检出(check out),在弹出的对话框中填写版本库URL(具体获取方式,上面讲上传项目到版本库的时候讲过),选择检出目录,点击确定. ...

  6. Python3入门系列之-----循环语句(for/while)

    前言 for循环在Python中是用的比较多的一种循环方法,小伙伴需要熟练掌握它的使用 本章节将为大家介绍 Python 循环语句的使用.Python 中的循环语句有 for 和 while for循 ...

  7. Python - __all__ 变量

    import * 当我们向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线 _ 或者双下划线 __ )开头的变量.函数和类 因此,如果不想模块文件中的某个对象被引入到其它文件中使用,可 ...

  8. 题解 Crash 的文明世界

    题目传送门 题目大意 给出一个\(n\)个点的树,和常数\(k\),对于\(\forall i\in[1,n]\),求出: \[\sum_{j=1}^{n} \text{dist}(i,j)^k \] ...

  9. Java(43)JDK新特性之方法引用

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228461.html 博客主页:https://www.cnblogs.com/testero ...

  10. Markdown Syntax Images

    Markdown Syntax Images Admittedly, it's fairly difficult to devise a "natural" syntax for ...