HDU - 3652】的更多相关文章

hdu 3652 B-number 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…
B-number 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…
题目链接: Hdu 3652 B-number 题目描述: 给出一个数n,问 [1, n]区间内有几个数能被13整除并且还有13这个子串? 解题思路: 能整除的数位DP,确定好状态随便搞搞就能过了.dp[x][mod][y][z] 表示 x位的整数,mod 13 等于几, y表示是否出现过13, 最后一位是z. 还有就是发现记忆化搜索 + 数位dp写出来真的很美讷.不说了,直接上代码,干净粗暴. #include <vector> #include <cstdio> #includ…
hdu 3652 题意:求1到n中包含'13'('13'不一定连续)且能被13整除的数的个数. 这是我第一道比较了能看懂的数位dp.定义状态dp[pos][res][sta]表示处理到第pos位,模的余数为0,sta取0,1,2,0表示无'13',1表示有1无3,2表示有'13'. 特别注意就是16行只要i==1时,nsta就是1,不用加sta=0,否则会WA.... #include<iostream> #include<cstring> using namespace std;…
http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意:求数位含有13和可以被13整除的数字个数. 思路:记录3种状态: st == 0 表示 从最高位到第 i 位既不包含 "13" 末尾也不包含 "1". st == 1 表示 末尾包含 "1". st == 2 表示 从最高位到第 i 位含有 "13". 可以被 13 整除的话用一个参数来记录从最高位到第 i 位的和对 13 取模…
http://acm.hdu.edu.cn/showproblem.php? pid=3652 大致题意:"B-number"即一个整数含有子串"13"且被13整除.求1-n之间这种数的个数. 思路:有两个限制条件:含有子串"13"和能被13整除. 那么设dp[site][mod][flag].表示到第site位对13取余为mod且标记为flag的数的个数.flag表示是否含有子串"13". 然后进行记忆话搜索. #inclu…
题意:统计能被13整除和含有13的数的个数 解法没法好说的..学了前面两道直接啪出来了 PS.HDU深夜日常维护,没法交题,拿网上的代码随便对拍一下,输出一致 #include<bits/stdc++.h> #define rep(i,j,k) for(register int i=j;i<=k;i++) using namespace std; const int maxn = 20; typedef long long ll; int a[maxn]; ll r,dp[maxn][2…
题目链接 学习大神的数位DP模版. #include <iostream> #include <cstdio> #include <cstring> using namespace std; ][][]; ]; //dp[i][j][k] 代表前i位余数为j时候 flag的3种情况 int dfs(int pos,int pre,int flag,int bound)//pos代表位置,pre代表余数, { ,end,tflag,tpre,i; )//flag 1代表上…
也是数位dp.考虑反面会简单很多. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][][],ret=,bit[]; void get_bit(int x) { ret=; ;x/=;} } int dfs(int pos,int mod,int flag1,bool flag2) { if (!pos) retur…
题意:B数的定义是有字符串“13”且能被整数13整除的数,求[1,n]内的B数个数. 题解:这是数位DP,我也就是刚入门,前两天看到了非递归写法,好麻烦.所以我建议写dfs的方法,容易理解,代码还简短. 在这说一下整除13的事,比如1523这个数,你把它用手自己模拟一遍,发现是15先%13==2,之后是(2*10+2)%13==9 ……,以此类推,最后mod==0&&ok==1,才返回1,(ok标记的是 是否出现过“13”). AC代码: #include <map> #inc…