HDU
来源:互联网 发布:漫威宇宙实力排行知乎 编辑:程序博客网 时间:2024/04/30 19:48
B-number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6128 Accepted Submission(s): 3528
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
wqb0039
Source
2010 Asia Regional Chengdu Site —— Online Contest
题意是求1~n里有多少个数,数位上有13存在且这个数取余13==0
数位dp
state:1,:前一位是1 2:前面有13出现 否则0
当时不知道怎么满足取余13等于0,其实按位数的权值一位一位的加,并膜13,只保留余数即可
这样:dp【位数】【state】【余数】
核心是想到记录余数这个状态,只有前面的余数相同,后面能取的个数才和之前求并记忆的一样
#include<stdio.h>#include<string.h>#include<math.h>#include<string>#include<algorithm>#include<queue>#include<vector>#include<map>#include<set>#define eps 1e-9#define PI 3.141592653589793#define bs 1000000007#define bsize 256#define MEM(a) memset(a,0,sizeof(a))#include<iostream>typedef long long ll;using namespace std;int dp[100][3][15];int a[100];int dfs(int pos,int state,int limit,int yu,long long t){if(pos==-1) { return state==2&&yu==0; }if(!limit&&dp[pos][state][yu]!=-1)return dp[pos][state][yu];int up=limit?a[pos]:9;int ans=0;int now;for(int i=0;i<=up;i++){ if(state==2) now=2; else if(state==1&&i==3) now=2; else if(i==1) now=1; else now=0;ans+=dfs(pos-1,now,limit&&i==a[pos],(yu+i*t)%13,t/10);}if(!limit&&dp[pos][state][yu]==-1) { dp[pos][state][yu]=ans; } return ans; } int solve(int x) { int pos=0; long long t=1; while(x) { a[pos++]=x%10; x/=10; t*=10; } return dfs(pos-1,0,1,0,t/10); }int main(){ int n; memset(dp,-1,sizeof(dp)); while(~scanf("%d",&n)) { printf("%d\n",solve(n)); } return 0; }
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- java -jar 与nohup的区别
- 树莓派 XBMC常用插件
- 在变化和不确定之中蓬勃成长
- 关于nginx环境下laravel除了默认路由都出现404报错的处理方法
- HTTP和HTTPS的区别
- HDU
- Servlet的线程安全问题
- UDP和TCP的区别
- Android双缓冲技术分析总结
- 在浏览器中输入www.baidu.com后执行的全部过程
- HDU 1556 Color the ball(线段树区间更新区间查询模板)
- Android动画--属性动画
- LintCode解题记录 17.5.3
- linux防火墙设置相关