HDU 3652 B-Number(数位dp)
来源:互联网 发布:java电商项目视频教程 编辑:程序博客网 时间:2024/05/01 20:57
题目链接:
HDU 3652 B-Number
题意
求
数据范围:
分析
记录高位模13的余数,和前一位数字,以及高位是否出现子串“13”即可。
Code
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;typedef long long ll;int digit[10], dp[10][10][15][2];int dfs(int pos, int rem, int pre, int state, int limit){ if (pos == -1) return rem == 0 && state; if (!limit && dp[pos][pre][rem][state] != -1) return dp[pos][pre][rem][state]; int last = limit ? digit[pos] : 9; int ret = 0; for (int i = 0; i <= last; ++i) { ret += dfs(pos - 1, (rem * 10 + i) % 13, i, state || (i == 3 && pre == 1), limit && (i == last)); } if (!limit) dp[pos][pre][rem][state] = ret; return ret;}int solve(int x){ memset(digit, 0, sizeof(digit)); int len = 0; while (x) { digit[len++] = x % 10; x /= 10; } return dfs(len - 1, 0, 0, 0, 1);}int main(){ int n; memset(dp, -1, sizeof (dp)); while (~scanf("%d", &n)) { printf("%d\n", solve(n)); } return 0;}
0 0
- HDU 3652--B-number(数位dp)
- HDU 3652 B-number(数位DP)
- [HDU 3652]B-number[数位DP]
- hdu 3652 B-number (数位DP)
- hdu 3652 B-number(数位DP)
- HDU:3652 B-number(数位DP)
- HDU-3652 B-number 数位DP
- HDU 3652 B-number(数位dp模版)
- hdu 3652 B-number(数位dp)
- [数位dp] hdu 3652 B-number
- 【HDU】3652 B-number 数位DP
- hdu 3652 B-number(数位dp)
- HDU 3652 B-number (数位DP)
- HDU 3652 B-number(数位DP)
- HDU 3652 B-number(数位DP)
- hdu 3652 B-number (数位DP)
- 【数位DP】 HDU 3652 B-number
- HDU 3652 B-number(数位DP)
- 关于一些css属性在微信上不兼容的解决方法
- PLM系统与选择
- Objective-C - runtime 之 Class 和 Meta Class
- Shell编程(2):符号相关
- Markdown 11种基本语法
- HDU 3652 B-Number(数位dp)
- C++实现通过年份与天数判断月份日期
- Linux中ps命令的简单使用
- Sqlplus无法使用上下左右键的问题
- Android简单的反编译嵌入例子
- 对象模型&模板
- LeetCode Restore IP Addresses(回溯法)
- 微软面试100题系列---求二叉树中节点的最大距离
- linux解压xxx.tar.bz2