Uva_11361 Investigating Div-Sum Property
题意:
在[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的更多相关文章
- 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 ...
- 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 ...
- DOM概念的区分:Attribute和Property, html()及.text(), .val()
Attribute就是dom节点自带的属性 例如:html中常用的id.class.title.align等: <div id="immooc" title="慕课 ...
- JavaScript动态设置div的样式的方法
有时候需要根据需要动态设置div的样式,当然对于稍有经验的javascript开发者来说,这一切都是那么的简单,但是对于初学者或者说没有相关经验的开发者来说可能就是一个不大不小的难关,下面就通过实例简 ...
- Solr调研总结
http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...
- solr教程,值得刚接触搜索开发人员一看
http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍sol ...
- Solr总结
http://www.cnblogs.com/guozk/p/3498831.html Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注 ...
- 【转载】solr教程,值得刚接触搜索开发人员一看
转载:http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍 ...
- Solr调研总结(转)
Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试.两个核心配置文件介绍.中文分词器配置.维护索引 ...
随机推荐
- Java的JDBC事务详解(转)
事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行. 2) 一致性(consistency):事务在完 ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- telnet的使用
1.要打开 telnet 不是内部或外部 命令 解决方案: 程序添加删除功能,添加即可 或法二 C:\WINDOWS\system32\telnet.exe (或用C:\WINDOWS\system3 ...
- .net mvc 发布部署到机器上
这样会自动在C:\Inetpub\wwwroot 会出现这个文件夹. 上述步骤都是在安装了 VS2010.MVC3.0和的电脑上操作的 接下来进行服务器的部署 :1. 安装Microsoft .net ...
- ubuntu权限管理常用命令 分类: linux ubuntu 学习笔记 2015-07-05 14:15 77人阅读 评论(0) 收藏
1.chmod 第一种方式 chomd [{ugoa}{+-=}{rwx}] [文件或者目录] u 代表该文件所属用户 g 代表该文件所属用户组 o 代表访客 a 代表所有用户 +-=分别表示增加权限 ...
- 功能模块图、业务流程图、处理流程图、ER图,数据库表图(概念模型和物理模型)画法
如果你能使用计算机规范画出以下几种图,那么恭喜你,你在我这里被封为学霸了,我膜拜ing-- 我作为前端开发与产品经理打交道已有5-6年时间,产品经理画的业务流程图我看过很多.于是百度搜+凭以往经验脑补 ...
- 用FlexSlider制作支付宝2013版幻灯片演示插件
flexslider制作支付宝2013版幻灯片精美特效,一款非常不错的jQuery特效源码可在下面地址或去源码搜藏网下载适用浏览器:IE8.360.FireFox.Chrome.Safari.Oper ...
- Weex命令
1.下载安装 $ git clone https://github.com/alibaba/weex.git //通过brew安装node $ brew install node //通过node安装 ...
- 最近有机会接触到了angularJs
记点笔记 概念多了 理顺还待时日: 总的来说: 1.ng-src src属性 2.ng-href href属性 3.ng-checked 选中状态 4.ng-selected 被选择状态 5.ng- ...
- [上传下载] C#FileDown文件下载类 (转载)
点击下载 FileDown.zip 主要功能如下 .参数为虚拟路径 .获取物理地址 .普通下载 .分块下载 .输出硬盘文件,提供下载 支持大文件.续传.速度限制.资源占用小 看下面代码吧 /// &l ...