HDU 3652 B-number(数位dp)
来源:互联网 发布:python md5解密算法 编辑:程序博客网 时间:2024/06/05 07:00
B-number
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
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.
Input
Process till EOF. In each line, there is one positive integer n(1 <= n <= 1000000000).
Output
Print each answer in a single line.
Sample Input
131002001000
Sample Output
1122
Author
Source
2010 Asia Regional Chengdu Site —— Online Contest
这道题的意思是给出一个数,问从1到这个数之间有多少数既有子串13,又能被13整除。
简单的数位dp题
#include <iostream>#include<string>#include<cstring>#include<set>#include<cstdio>using namespace std;typedef long long ll;ll dp[25][15][3];ll a[25];ll dfs(int pos,bool is,int state2,int state,bool limit){ if(pos==-1&&state==1&&state2==0) return 1; else if(pos==-1) return 0; if(!limit&&dp[pos][state2][state]!=-1) return dp[pos][state2][state]; int up=limit?a[pos]:9; ll temp=0; for(int i=0;i<=up;i++) { if((is&&i==3)||state==1) temp+=dfs(pos-1,i==1,(state2*10+i)%13,1,limit&&a[pos]==i); else if(i==1) temp+=dfs(pos-1,i==1,(state2*10+i)%13,2,limit&&a[pos]==i); else temp+=dfs(pos-1,i==1,(state2*10+i)%13,0,limit&&a[pos]==i); } if(!limit) dp[pos][state2][state]=temp; return temp;}ll solve(ll x){ memset(dp,-1,sizeof(dp)); int pos=0; while(x) { a[pos++]=x%10; x/=10; } return dfs(pos-1,0,0,0,true);}int main(){ ll x; while(~scanf("%lld",&x)) { cout<<solve(x)<<endl; } 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)
- 聚类算法之Kmean算法应用和Python应用举例
- Android 将App的内容延伸到状态栏/导航栏
- 详解常用的注册表操作函数
- mysql online ddl原理
- ROS学习笔记
- HDU 3652 B-number(数位dp)
- 虚幻UE4中PC端的水着色教程
- 大话设计模式之简单工厂模式
- FloatingActionButton的使用
- 20个很有用的css技巧
- 【WLAN从入门到精通-基础篇】第8期——STA接入过程
- 分支界限法——0/1背包问题
- Echarts小知识
- 【React Native开发01】React Native从环境搭建到项目生成这一篇就够了