题目链接

题意:

  在[A,B]区间内找出满足条件的数有多少个。

  条件:这个数本身 能够整除K, 且各位数字之和能够整除K。

思路:

  数据范围过大2^31

  2^31 = 2147483648 ~ 2*10^10

各位数字之和不会超过 2 + 9 * 9 = 83 , 所以 当K >= 83 时 答案为0

设F[n] 为 [0,n]区间内符合条件的数, 那么 答案就为F[B] - F[A-1].

暴力枚举O(N^2) 针对这么大的数据显然超时。

  设f[i][s_mod][x_mod] 为 前i位数字确定时, 当前数(将后面未知数均视为0) 除以K 余x_mod, 各位数字之和除以K 余s_mod时的方案数

  则f[i][s_mod][x_mod] = f[i - 1][(s_mod + p) % K][(x_mod * 10 + p) % K] (p = 0, 1, 2, 3, ..., 9)

代码:

  

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define MAXN 11
int num[MAXN];
int e[MAXN];
LL f[MAXN][][];
int A, B, K, len;
void init()
{
e[] = ;
for(int i = ; i < MAXN; i ++)
e[i] = e[i-] * ;
}
LL func(int x)
{
//
memset(num, , sizeof(num));
memset(f, , sizeof(f));
int s1 = ;
int s2 = ;
for(int i = ; i >=; i --)
{
num[i] = x % ;
x /= ;
}
for(int i = ; i < ; i ++)
{
s1 = (s1 + num[i]) % K;
s2 = (s2 * + num[i]) % K;
for(int s_mod = ; s_mod < K; s_mod ++)
for(int x_mod = ; x_mod < K; x_mod ++)
for(int p = ; p < ; p ++)
f[i + ][(s_mod + p) % K][(x_mod * + p) % K] += f[i][s_mod][x_mod];
for(int j = ; j < num[i + ]; j ++)
f[i + ][(s1 + j) % K][(s2 * + j) % K] ++;
}
if((s1 + num[]) % K == && (s2 * + num[]) % K == ) ++ f[][][];
return f[][][];
} int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d %d %d",&A, &B, &K);
if(K >= )
printf("0\n");
else
printf("%lld\n", func(B) - func(A - ));
}
return ;
}

Uva_11361 Investigating Div-Sum Property的更多相关文章

  1. Data Structure Binary Tree: Convert an arbitrary Binary Tree to a tree that holds Children Sum Property

    http://www.geeksforgeeks.org/convert-an-arbitrary-binary-tree-to-a-tree-that-holds-children-sum-prop ...

  2. Data Structure Binary Tree: Check for Children Sum Property in a Binary Tree

    http://www.geeksforgeeks.org/check-for-children-sum-property-in-a-binary-tree/ #include <iostream ...

  3. DOM概念的区分:Attribute和Property, html()及.text(), .val()

    Attribute就是dom节点自带的属性 例如:html中常用的id.class.title.align等: <div id="immooc" title="慕课 ...

  4. JavaScript动态设置div的样式的方法

    有时候需要根据需要动态设置div的样式,当然对于稍有经验的javascript开发者来说,这一切都是那么的简单,但是对于初学者或者说没有相关经验的开发者来说可能就是一个不大不小的难关,下面就通过实例简 ...

  5. Solr调研总结

    http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...

  6. solr教程,值得刚接触搜索开发人员一看

    http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍sol ...

  7. Solr总结

    http://www.cnblogs.com/guozk/p/3498831.html Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注 ...

  8. 【转载】solr教程,值得刚接触搜索开发人员一看

    转载:http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍 ...

  9. Solr调研总结(转)

    Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试.两个核心配置文件介绍.中文分词器配置.维护索引 ...

随机推荐

  1. C#目录文件复制、创建操作

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  2. Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记

    第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Ta ...

  3. nginx lua 开发笔记

    获取 在lua代码中获取 location 正则的参数对应的变量 // location location ~/lua_http_2/(\w*.+) { } // lua local vars=ngx ...

  4. java与javax有什么区别?

    java 是java j2sdk 中的类库,也就是Java Development kit . 它提供也一些基础的东西,如io库.桌面程序的类库,如awt.集合库(如Collection.List.M ...

  5. VS2015+TFS2015源代码管理

    使用Visual Studio连接TFS

  6. spring使用aop

    基于spring-framework-4.1.7使用aop >>>>>>>>>>>>>>>>>&g ...

  7. LAMP网站架构方案分析

    本文引自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框 ...

  8. 如何快速学习bootstrap

    bootstrap中文网http://www.bootcss.com/解决了我所有使用bootstrap的问题,从0开始,下面的全部链接都是该网站的子链接.例子http://v3.bootcss.co ...

  9. the account is currently locked out. The system administrator can unlock it.

    今天遇到的问题比较有意思.首先是很久没有打开测试数据库了,今天打开,使用service程序测试的时候出现下面的错误提示:Message: System.Data.SqlClient.SqlExcept ...

  10. iOS中打印系统详细日志

    Q:如何打印当前的函数和行号? A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号.如: 1 NSLog(@"%s:%d obj=%@", __func__, ...