problem=1068">http://www.lightoj.com/volume_showproblem.php?problem=1068

求出区间[A,B]内能被K整除且各位数字之和也能被K整除的数的个数。(1 ≤ A ≤ B < 231 and 0 < K < 10000)

算是最简单的数位dp了。k在这里是10000。三维数组都开不开。可是想想会发现A,B最多有10位,各位数字之和不会超过90。那么当 k >= 90时,就不用dp,由于个位数字之和对k取余不会等于0。

所以数组仅仅需开到dp[12][90][90]。



#include <stdio.h>
#include <iostream>
#include <map>
#include <set>
#include <list>
#include <stack>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#include <algorithm>
#define LL __int64
#define eps 1e-12
#define PI acos(-1.0)
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 4010; int dp[15][92][92];
int a,b,k;
int dig[15]; int dfs(int len, int mod1, int mod2, int up)
{
if(len == 0)
return mod1 == 0 && mod2 == 0;
if(!up && dp[len][mod1][mod2] != -1)
return dp[len][mod1][mod2];
int res = 0;
int n = up ? dig[len] : 9;
for(int i = 0; i <= n; i++)
{
int tmod1 = (mod1*10 + i)%k;
int tmod2 = (mod2 + i)%k;
res += dfs(len-1,tmod1,tmod2,up&&i==n);
}
if(!up)
dp[len][mod1][mod2] = res;
return res;
} int cal(int num)
{
int len = 0;
while(num)
{
dig[++len] = num%10;
num /= 10;
}
return dfs(len,0,0,1);
} int main()
{
int test;
scanf("%d",&test);
for(int item = 1; item <= test; item++)
{
scanf("%d %d %d",&a,&b,&k);
if(k >= 90)
{
printf("Case %d: 0\n",item);
continue;
}
memset(dp,-1,sizeof(dp));
printf("Case %d: %d\n",item,cal(b) - cal(a-1));
}
return 0;
}

最新文章

  1. .Net语言 APP开发平台——Smobiler学习日志:用MenuView控件仿钉钉APP的首页菜单
  2. php设计模式 工厂、单例、注册树模式
  3. php中的ip2long和long2ip的理解
  4. Python-Jenkins 查询job是否存在
  5. const char *p、char const *p、char * const p的区别?
  6. AndroidStudio中安装可自动生成json实体类的jar包
  7. PHP学习心得(一)——简介
  8. iOS控件——UIView与UIImageView播放动画的实现方法
  9. php json_encode数据格式化2种格式[]和{}
  10. POJ培训计划2253_Frogger(最短/floyd)
  11. 用label实现自适应宽度的方法
  12. Go 错误处理
  13. 一个特殊的SQL Server阻塞案例分析
  14. Python 数据分析5
  15. c#方法转异步例子
  16. MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
  17. PHP ==与===的区别
  18. java 其它可选方法
  19. 如何在CI中写工具类,在哪个目录写
  20. 在django restful framework中设置django model的property

热门文章

  1. js 字符串长度截取
  2. H5 &lt;audio&gt; 音频标签自定义样式修改以及添加播放控制事件
  3. transform与position:fixed的那些恩怨
  4. XmlRootElement
  5. formal parameter
  6. Python实现简单的Web服务器 解析
  7. mariadb 集群使用
  8. 无法启动Visual Studio的localhost web服务器,端口&quot;xxxx&quot;已被使用
  9. UVA 272 TEX Quotes【字符串】
  10. HDU 5242 Game(树上贪心)