摘要: 题解:f(x)表示x的各个数位的数字之和,求满足x在[a, b]之间且x = 0(mod f(x))的所有x的个数。解法:数位DP,这道题思维难度一般,但是充分体现了数位DP锻炼代码的特性。 设d[i][j][k][l]表示长度为i,各位数字之和为j,除以k余l的数的个数。具体状态转移方程见代码。tag:数位DP 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-12-16 12:19 4 * File Name: DP-HDU-4389.cpp 5 */ 6 #include 7 #include 8 #include 9... 阅读全文
posted @ 2013-12-16 16:27 Plumrain 阅读(255) 评论(0) 推荐(0) 编辑
摘要: DIV1 250pt题意:给定一个正整数n(n 1,则返回vector ans = {p, q},否则返回ans = {}。解法:首先,看到题的第一想法是,枚举p。而由于n的范围太大,O(10^9)的复杂度不能接受。又想到,如果题目的限制为q > 2,那么枚举的复杂度就降到了O(10^6),可以接受了。故得到算法,特判n可不可以表示成p ^ 2的形式(注意判定p是不是质数),然后再从1到10^6枚举看n能不能表示成p^q,其中q > 2。这样,问题能够得到解决,但是编码复杂度比较高,最后我写出来只拿到了160+分。 然后看了题解,枚举q...因为10^18 12 #include 阅读全文
posted @ 2013-12-16 09:40 Plumrain 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定区间[a,b],求将区间中所有数写在黑板上,要写的数字‘1’的次数。(1 7 #include 8 #include 9 10 using namespace std;11 12 #define CLR(x) memset(x, 0, sizeof(x))13 typedef long long int64;14 int64 d[25][20];15 int dit[25];16 17 int64 mypow(int64 p, int64 n)18 {19 int64 ret = 1;20 while (n){21 if (n & 1) r... 阅读全文
posted @ 2013-12-16 00:54 Plumrain 阅读(217) 评论(0) 推荐(0) 编辑