HDU - 3652 数位dp水题
来源:互联网 发布:淘宝 css 显示代码 编辑:程序博客网 时间:2024/06/03 17:27
题意:
找到[1,n]中的满足数位上有子串13,且mod13 == 0的数字有多少个。
思路:
数位dp水题
代码:
#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;typedef long long ll;int a[20];ll dp[20][15][15][2];ll dfs(int pos, int mod, int pre, bool flag, bool limit) {if (pos == -1) {if (mod == 0 && flag) return 1;return 0;}if (!limit && dp[pos][mod][pre][flag] != -1) return dp[pos][mod][pre][flag];int up = limit ? a[pos] : 9;ll res = 0;for (int i = 0; i <= up; i++) {bool tag = flag | (pre == 1 && i == 3);res += dfs(pos - 1, (mod * 10 + i) % 13, i, tag, limit && a[pos] == i);}if (!limit) dp[pos][mod][pre][flag] = res;return res;}ll solve(ll x) {int pos = 0;while (x) {a[pos++] = x % 10;x /= 10;}return dfs(pos - 1, 0, 0, false, true);}int main() {int n;memset(dp, -1, sizeof(dp));while (scanf("%d", &n) != EOF) {printf("%lld\n", solve(n));}return 0;}
0 0
- HDU - 3652 数位dp水题
- HDU 3652 数位DP
- hdu 3652 数位DP
- hdu 3652 -数位dp
- 【数位DP】 【HDU 3652】
- hdu 3652 数位dp
- 数位DP HDU-3652
- HDU 3652 数位DP
- HDU 3652 数位DP
- hdu 3652(数位dp)
- HDU 3652 数位DP
- hdu 3652数位dp
- hdu 3652 数位dp
- HDU 3652 数位DP
- HDU 3652 数位DP
- HDU 3652 数位DP
- hdu 3652 数位dp
- HDU-3652-数位dp
- 基础知识——接口和抽象类
- C#winform UDP通信 发送和接收信息
- 线程
- Linux批量添加用户
- SIA实战(三):为bean动态的增加新方法
- HDU - 3652 数位dp水题
- 2017.02.14总结
- CppQuiz系列 1
- maven POM.xml 标签详解
- matlab 中的 figure 之间的切换方式
- mysql之数据约束
- Android Lint常见问题分析(for studio)
- Oracle执行计划基础详解(转载)
- PAT-B1037. 在霍格沃茨找零钱