51Nod-1230-幸运数
来源:互联网 发布:安全优化版和官方原版 编辑:程序博客网 时间:2024/05/01 16:30
ACM模版
描述
题解
典型的数位 DP 问题,也是树归~~~
先进行素数筛,然后设
以前写数位 DP 都是用的非递归形式,现在看来,感觉还是树归最容易写了~~~
代码
#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef long long ll;const int MAXD = 20;const int MAXN = 1500;const int MAXM = 163;/* * 素数筛选,判断小于MAXN的数是不是素数 * notprime是一张表,false表示是素数,true表示不是 */int dig[MAXN];bool notprime[MAXN];ll dp[MAXD][MAXM][MAXN], L, R; // dp[i][j][k] i 位 j 和 k 平方和void init(){ memset(notprime, false, sizeof(notprime)); memset(dp, -1, sizeof(dp)); notprime[0] = notprime[1] = true; for (int i = 2; i < MAXN; i++) { if (!notprime[i]) { if (i > MAXN / i) // 阻止后边i * i溢出(或者i,j用long long) { continue; } // 直接从i * i开始就可以,小于i倍的已经筛选过了 for (int j = i * i; j < MAXN; j += i) { notprime[j] = true; } } }}ll dfs(int pos, int sum, int sqrt_sum, int flag){ if (pos < 0) { return (!notprime[sum]) && (!notprime[sqrt_sum]); } if (!flag && dp[pos][sum][sqrt_sum] != -1) { return dp[pos][sum][sqrt_sum]; } ll res = 0; int lim = flag ? dig[pos] : 9; for (int i = 0; i <= lim; i++) { res += dfs(pos - 1, sum + i, sqrt_sum + i * i, flag && (i == lim)); } if (!flag) { dp[pos][sum][sqrt_sum] = res; } return res;}ll solve(ll n){ int len = 0; while (n) { dig[len++] = n % 10; n /= 10; } return dfs(len - 1, 0, 0, 1);}int main(void){ init(); int T; cin >> T; while (T--) { scanf("%lld%lld", &L, &R); printf("%lld\n", solve(R) - solve(L - 1)); } return 0;}
阅读全文
0 0
- 51Nod-1230-幸运数
- 51nod 1230 幸运数 数位dp
- 51nod 1230 幸运数 数位dp
- 51NOD 1043 幸运号码
- 51nod 1043 幸运号码
- 51Nod 1043 幸运号码
- 51nod 1588 幸运树
- 51nod 1043 幸运数字
- 51nod 1043 幸运号码
- 51nod1230幸运数
- 51Nod-1043-幸运号码
- 51Nod-幸运数字(打表)
- 51nod-1043 幸运号码(滚动数组)
- 51nod 1043 幸运号码(dp)
- 51Nod 1043 幸运号码 数位DP
- 51 nod 1043 幸运号码(数位DP)
- 51Nod-1637-幸运数字转换
- 51nod 1043 幸运号码 数位dp
- C/C++中break和continue的区别
- POJ 2159 (Ancient Cipher)
- 收藏几个模型融合的网址
- Opencv学习笔记:Mat类详解(一)
- Django21-地图
- 51Nod-1230-幸运数
- Java Web基础之文件上传
- 【补充】s3c2440启动过程详细分析
- 第三方网站QQ登录
- myeclipse和eclipse中svn插件的汉化中文和英文
- 使用forever运行nodejs应用
- 3.1Java基础语法(switch语句、循环结构)
- 希尔排序
- POJ 2533