官方题解

The first observation we can make is that, for all positive integers x x, the digit-product p(x)p(x) is always less than or equal to x x. From x∗p(x)≤B≤1018x*p(x) ≤ B ≤ 10^{18} we can deduce that p(x)≤B≤109 p(x) ≤ B ≤ 10^9
Because p(x) p(x) is a product of digits, its prime factors can only be 2 2, 33, 5 5 and 77. The number of different integers with only 2 2, 33, 5 5 and 77 in their prime factorization that are less than or equal to 109 10^9 is quite small (exactly 5194 5194).

然后就很显然了
枚举出 p(x) p(x) 然后找小于等于 n/p(x) n/p(x)的满足条件的 x <script type="math/tex" id="MathJax-Element-2406">x</script>
简单的数位DP 我不顾及复杂度地乱写一通竟然过了
为什么std跑的那么快 嘤嘤嘤

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;const int fact[]={2,3,5,7};
const int C[11][4]={  {0,0,0,0}, {0,0,0,0}, {1,0,0,0}, {0,1,0,0}, {2,0,0,0}, {0,0,1,0}, {1,1,0,0}, {0,0,0,1}, {3,0,0,0}, {0,2,0,0}
};
int f[25][45][35][25][25];inline ll count(ll n,int a,int b,int c,int d){if (!n) return 0;int w[20]={0},m=0; n++;for (ll t=n;t;w[++m]=t%10,t/=10); reverse(w+1,w+m+1);for (int t=1;t<=m;t++)for (int i=0;i<=a;i++)for (int j=0;j<=b;j++)for (int k=0;k<=c;k++)for (int l=0;l<=d;l++) f[t][i][j][k][l]=0;int p[4]={0}; int flag=0;for (int t=1;t<=m;t++){for (int r=1;r<=9;r++)for (int i=0;i+C[r][0]<=a;i++)for (int j=0;j+C[r][1]<=b;j++)for (int k=0;k+C[r][2]<=c;k++)for (int l=0;l+C[r][3]<=d;l++)f[t][i+C[r][0]][j+C[r][1]][k+C[r][2]][l+C[r][3]]+=f[t-1][i][j][k][l];if (!flag)for (int r=1;r<w[t];r++)f[t][p[0]+C[r][0]][p[1]+C[r][1]][p[2]+C[r][2]][p[3]+C[r][3]]++;if (t!=1){for (int r=1;r<=9;r++)f[t][C[r][0]][C[r][1]][C[r][2]][C[r][3]]++;}if (!w[t])flag=1;elsefor (int i=0;i<4;i++)p[i]+=C[w[t]][i];}return f[m][a][b][c][d];
}inline ll Solve(ll n){if (!n) return 0;ll a,b,c,d; int i,j,k,l; ll B=sqrt(n);ll ret=0;for (i=0,a=1;a<=B;i++,a*=fact[0])for (j=0,b=a;b<=B;j++,b*=fact[1])for (k=0,c=b;c<=B;k++,c*=fact[2])for (l=0,d=c;d<=B;l++,d*=fact[3])ret+=count(n/d,i,j,k,l);return ret;
}int main(){ll L,R;freopen("t.in","r",stdin);freopen("t.out","w",stdout);scanf("%lld%lld",&L,&R);printf("%lld\n",Solve(R)-Solve(L-1));return 0;
}

[数位DP] BZOJ 2713 [Violet 2]愚蠢的副官 BZOJ 1183 [Croatian2008]Umnozak相关推荐

  1. BZOJ2713 [Violet 2]愚蠢的副官BZOJ1183 [Croatian2008]Umnozak

    digit-product:各个数位的乘积 self-product:digit-product与自身的乘积 首先我们可以发现一个数的digital-product小于等于其本身,所以一个数的digi ...

  2. 【BZOJ 2713】[Violet 2]愚蠢的副官【BZOJ1183】[Croatian2008]Umnozak——【数位DP】

    题目链接: 2713传送门 1183传送! 题解: 由于看不懂英文题解(十个单词十一个不认识--),所以只能自己想QAQ. 其实乱搞就好= =. 首先我们发现,各位数字乘积要在1e9以下才可能有用,这 ...

  3. 【BZOJ2713】[Violet 2]愚蠢的副官【数位DP】【质因数分解】【枚举】【记忆化搜索】

    [题目链接] 同[BZOJ1183的题解] /* Pigonometry */ #include <cstdio> #include <cstring> #include &l ...

  4. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  5. BZOJ 3329 Xorequ (数位DP、矩阵乘法)

    BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...

  6. BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)

    BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 Time Limit: 5 Sec  Memory Limit: 64 MB Description 正如你所知 ...

  7. [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】

    题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...

  8. [数位dp] bzoj 3209 花神的数论题

    [数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...

  9. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

最新文章

  1. python安装pillow模块错误
  2. gptuefi优势_UEFI+GPT模式,对提升SSD性能非常明显 | 麦田一棵葱
  3. Nginx代理webSocket经常中断的解决方案, 如何保持长连接
  4. python变量生命周期_python 变量定义及变量生命周期
  5. 命令行编译java项目_命令行编译运行java工程(转)
  6. python threading类重写_python下threading模块使用的注意点
  7. 成为软件高手的几个忌讳(转贴)
  8. 第三方攻击在增长但风险管理跟不上
  9. 垃圾收集器和内存分配
  10. Atitit.atiDataStoreService   v2 新特性
  11. 新浪博客的html,新浪博客代码-HTML代码
  12. 燕京八景寻踪﹒宛平城卢沟桥
  13. Matlab 直方图均衡化
  14. 【云计算OpenStack-OpenStack Queens版本-遇错】基于OpenStack的云计算环境搭建
  15. android 屏幕统计,OffScreen - 屏幕时间统计
  16. 购物车的制作 与注册表单验证
  17. docker中调试失败
  18. 液晶显示器测试软件的使用经验分享(资源有下载链接)
  19. 漫谈程序猿系列:看看你离优秀有多远
  20. Python_人人车_字体加密的破解

热门文章

  1. 微信小程序遇到的问题
  2. Ghost镜像与wim镜像
  3. 【c语言】给出三角形的三边长,求三角形面积
  4. 预测泰坦尼克获救人数
  5. Windows下实现BPG压缩以及解压缩(包含python批量处理图片)
  6. pytorch:data读取出错:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension
  7. L1-052 2018我们要赢 - java
  8. c语言编译器mingw——常用编译命令
  9. 用工厂方法模式实现四则计算器
  10. C++下ctrl+z退出cin输入循环