题意:

统计[a, b]中有多少个数字满足:自身是k的倍数,而且各个数字之和也是k的倍数。

分析:

详细分析见《训练之南》吧,=_=||

书上提出了一个模板的概念,有了模板我们就可以分块计算。

虽然书上定义f(x)表示不超过x的非负整数且满足条件的个数,但为了编码方便,代码中f(x)的含义为0~x-1中满足条件的个数。

这样最终所求为f(b+1) - f(a)

 #include <bits/stdc++.h>
using namespace std; int MOD;
int pow_ten[];
int f[][][]; inline int mod(int n)
{ return ((n % MOD) + MOD) % MOD; } int F(int d, int m1, int m2)
{
if(d == ) return m1 == && m2 == ? : ;
int& ans = f[d][m1][m2];
if(ans >= ) return ans; ans = ;
for(int x = ; x <= ; x++)
ans += F(d-, mod(m1-x), mod(m2-x*pow_ten[d-]));
return ans;
} int sum(int n)
{
char digits[];
sprintf(digits, "%d", n);
int nd = strlen(digits); int base = ;
int sumd = ;
int ans = ;
for(int i = ; i < nd; i++)
{
int na = nd - i - ;
for(int d = ; d < digits[i] - ''; d++)
ans += F(na, mod(-sumd-d), mod(-base-d*pow_ten[na]));
sumd += digits[i] - '';
base += (digits[i] - '') * pow_ten[na];
}
return ans;
} int main()
{
//freopen("in.txt", "r", stdin); pow_ten[] = ;
for(int i = ; i <= ; i++) pow_ten[i] = pow_ten[i - ] * ; int T, a, b;
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &a, &b, &MOD);
if(MOD > ) { puts(""); continue; }
memset(f, -, sizeof(f));
printf("%d\n", sum(b+) - sum(a));
} return ;
}

代码君

UVa 11361 (计数 递推) Investigating Div-Sum Property的更多相关文章

  1. Uva 10446【递推,dp】

    UVa 10446 求(n,bcak)递归次数.自己推出来了一个式子: 其实就是这个式子,但是不知道该怎么写,怕递归写法超时.其实直接递推就好,边界条件易得C(0,back)=1.C(1,back)= ...

  2. UVa 10943 (数学 递推) How do you add?

    将K个不超过N的非负整数加起来,使它们的和为N,一共有多少种方法. 设d(i, j)表示j个不超过i的非负整数之和为i的方法数. d(i, j) = sum{ d(k, j-1) | 0 ≤ k ≤ ...

  3. [Vijos1130][NOIP2001]数的计数 (递推)

    自己的递推一塌糊涂 考前抱佛脚 #include<bits/stdc++.h> using namespace std; ]; int main() { int n;scanf(" ...

  4. UVa 10520【递推 搜索】

    UVa 10520 哇!简直恶心的递推,生推了半天..感觉题不难,但是恶心,不推出来又难受..一不小心还A了[]~( ̄▽ ̄)~*,AC的猝不及防... 先递推求出f[i][1](1<=i< ...

  5. LA 4123 (计数 递推) Glenbow Museum

    题意: 这种所有边都是垂直或水平的多边形,可以用一个字符串来表示,一个270°的内角记作O,一个90°的内角记作R. 如果多边形内存在一个点,能看到该多边形所有的点,则这个多边形对应的序列是合法的.这 ...

  6. UVa 557 (概率 递推) Burger

    题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡 ...

  7. UVa 1645 Count (递推,数论)

    题意:给定一棵 n 个结点的有根树,使得每个深度中所有结点的子结点数相同.求多棵这样的树. 析:首先这棵树是有根的,那么肯定有一个根结点,然后剩下的再看能不能再分成深度相同的子树,也就是说是不是它的约 ...

  8. Coin Toss(uva 10328,动态规划递推,限制条件,至少转至多,高精度)

    有n张牌,求出至少有k张牌连续是正面的排列的种数.(1=<k<=n<=100) Toss is an important part of any event. When everyt ...

  9. UVA - 11021 - Tribles 递推概率

    GRAVITATION, n.“The tendency of all bodies to approach one another with a strengthproportion to the ...

随机推荐

  1. WPF 多线程处理(1)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 废话不多说,先上图: 多线程处理数据后在th ...

  2. 关于cookie的一点知识

    关于cookie的一点知识 1.cookie是存储在客户端计算机中. 2.cookie不能跨浏览器访问.cookie是浏览器保存的,所以不同浏览器对cookie的保存路径.存储数据的格式.文件大小都可 ...

  3. Text selection in div(contenteditable) when double click

    背景: 在最近项目中,碰到一个问题:有一个可编辑的div需要双击时可编辑,blur或者回车时将编辑结果保存.你可能注意到双击时,文字会被选中,可编辑区域不会focus到光标位置.考虑到兼容性问题,写了 ...

  4. 运用 DataContractSerializer 存储本地对象

    public void Save(string filename,State state) { DataContractSerializer ds = new DataContractSerializ ...

  5. cf 363D

    贪心加二分 虽然比赛后才过 ........ /************************************************************************* &g ...

  6. change Username for SVN(Subclipse) in Eclipse

    Subclipse does not own the information about users and passwords (credentials), so there is no way f ...

  7. URAL 1244. Gentlemen (DP)

    题目链接 题意 : 给出一幅不完全的纸牌.算出哪些牌丢失了. 思路 : 算是背包一个吧.if f[j]>0  f[j+a[i]] += f[j];然后在记录一下路径. #include < ...

  8. Intellij 导入play framework 项目

    新建一个项目 play new helloworld IshallbeThatIshallbe:~ iamthat$ mkdir temp IshallbeThatIshallbe:~ iamthat ...

  9. 近期概况&总结

    下午考完英语的学考就要放假啦,是衡中的假期啊QAQ 所以灰常的激动,一点也不想写题(我不会告诉你其实假期只有一个晚上.. 自从CTSC&APIO回来之后就一直在机房颓颓颓,跟着zcg学了很多新 ...

  10. Java学习笔记(一) java介绍

    编程语言分为:编译型语言和解释型语言. 编译型语言需要经过特定编译器通过一次性编译,成为该特定平台硬件可执行的机器码,可脱离开发环境独立运行,运行效率较高,但是无法跨平台移植. 解释型语言需要经过特定 ...