hdu3652 A-B number 数位DP
来源:互联网 发布:肌肉科技 知乎 编辑:程序博客网 时间:2024/06/03 22:39
题目描述
A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- string “13” and can be divided by 13. For example, 130 and 2613 are wqb-numbers, but 143 and 2639 are not. Your task is to calculate how many wqb-numbers from 1 to n for a given integer n.
大意
找一个数使它包含13并且整除13。很明显的数位DP,四维数组记录【当前位置】【余数】【这一位的情况】【操作】。
代码
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n; int dp[10][15][2][10],a[10]; int dfs(int pos,int mod,int t,int pre,int limit) { if (pos==-1)return (mod==0&&t); if (!limit&&dp[pos][mod][t][pre]!=-1) return dp[pos][mod][t][pre]; int up=limit?a[pos]:9; int ans=0; for(int i=0;i<=up;++i) { ans+=dfs(pos-1,(mod*10+i)%13,t||(pre==1&&i==3),i,limit&&(i==up)); } if (!limit) dp[pos][mod][t][pre]=ans; return ans; } int solve(int x) { int len=0; while(x) a[len++]=x%10,x/=10; return dfs(len-1,0,0,0,1); } int main() { memset(dp,-1,sizeof(dp)); while(scanf("%d",&n)!=EOF) { printf("%d\n",solve(n)); } return 0; }
阅读全文
2 0
- hdu3652 A-B number 数位DP
- 【数位DP】 hdu3652 B-number
- 【hdu3652】【数位DP】B-number
- 【数位DP】B-number HDU3652
- HDU3652:B-number(数位DP)
- hdu3652 B-number (数位DP)
- HDU3652 B-number 数位DP
- hdu3652 B-number 数位dp
- [HDU3652]B-number && 数位DP
- hdu3652 B-number 数位dp
- hdu3652---B-number(数位dp)
- HDU3652 B-number 数位DP
- hdu3652 B-number 数位dp
- hdu3652 B-number 数位dp
- HDU3652 B-number(数位DP)
- 数位dp--hdu3652 B-number
- hdu3652 B-number(数位DP)
- HDU3652 B-number 数位DP
- Linux学习小结笔记
- BZOJ 4152 博弈论 解题报告
- BZOJ2463: [中山市选2009]谁能赢呢? 题解 【(?)博弈论】
- 关于drools规则引擎的环境搭建
- Python爬虫入门一之综述
- hdu3652 A-B number 数位DP
- 死锁详解
- 一.python多线程类型总结
- 解决Could not load file or assembly CefSharp.Core.dll的问题
- HDU 4324 Triangle LOVE(拓扑排序)
- Sorted table
- iscroll 移動端向上滑不動
- 如何利用AJAX进行文件的上传,并对上传内容进行限制,在项目中总会遇见这样的问题,下面就为大家举个栗子。 HTML代码 <form id="uploadForm" enctype="multipar
- 什么是过渡绘制,如何防止过渡绘制