题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4321

-------------------------------------------------------------------------------

虽然有更优美的做法 不过数据范围还是可以数位$DP$的

即把模型转化为 在区间内 $mod\ a  = b\ mod\ a$ 的数所含$1$的个数之和

四维的数组分别记录 枚举到第$x$位 是否达到上限 $mod\ a$ 的余数 当前位是否为$1$ 这些状态

然后统计在这些状态下的数的个数$F$ 以及在这些状态下的数的总贡献 $G$

转移的话 $F$比较简单

$G$的话先把当前位之后的$G$全部转移上去 再把当前位根据$F$的大小算好贡献

之后就是一个记忆化搜索了

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
long long f[][][][], g[][][][], two[];
int ti[][][][];
bool num[];
long long a, b, n, ans;
int t, len, tt;
void work(long long x)
{
memset(num, , sizeof num);
len = ;
while(x)
{
num[++len] = x & ;
x >>= ;
}
two[] = % a;
for(int i = ; i < len; ++i)
two[i] = two[i - ] * % a;
}
long long dfs(int x, bool top, int r, bool one)
{
if(ti[x][top][r][one] == tt)
return f[x][top][r][one];
ti[x][top][r][one] = tt;
if(x == )
{
g[x][top][r][one] = (one && (r == b % a));
return f[x][top][r][one] = (r == b % a);
}
f[x][top][r][one] = g[x][top][r][one] = ;
if(top)
{
if(num[x])
{
f[x][top][r][one] += dfs(x - , , (two[x - ] + r) % a, );
g[x][top][r][one] += g[x - ][][(two[x - ] + r) % a][];
f[x][top][r][one] += dfs(x - , , r, );
g[x][top][r][one] += g[x - ][][r][];
}
else
{
f[x][top][r][one] += dfs(x - , , r, );
g[x][top][r][one] += g[x - ][][r][];
}
}
else
{
f[x][top][r][one] += dfs(x - , , (two[x - ] + r) % a, );
g[x][top][r][one] += g[x - ][][(two[x - ] + r) % a][];
f[x][top][r][one] += dfs(x - , , r, );
g[x][top][r][one] += g[x - ][][r][];
}
g[x][top][r][one] += one * f[x][top][r][one];
return f[x][top][r][one];
}
int main()
{
scanf("%d", &t);
for(int ca = ; ca <= t; ++ca)
{
scanf("%lld%lld%lld", &a, &b, &n);
work(b);
++tt;
dfs(len + , , , );
ans = -g[len + ][][][];
work(b + n * a);
++tt;
dfs(len + , , , );
ans += g[len + ][][][];
printf("Case #%d: %lld\n", ca, ans);
}
return ;
}

HDU 4321 Arcane Numbers 2的更多相关文章

  1. HDU 4320 Arcane Numbers 1 (数论)

    A - Arcane Numbers 1 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  2. HDU 4320 Arcane Numbers 1(质因子包含)

    http://acm.hdu.edu.cn/showproblem.php?pid=4320 题意: 给出A,B,判断在A进制下的有限小数能否转换成B进制下的有限小数. 思路: 这位博主讲得挺不错的h ...

  3. HDU 4320 Arcane Numbers 1 (质因子分解)

    题目:传送门. 题意:将一个A进制下的有限小数转化为B进制看是否仍为有限小数. 题解:一个A进制的小数可以下次 左移动n位变成A进制整数然后再将其转化为B进制即可 即B^m/A^n要整除,因此A的质因 ...

  4. 2012 #3 Arcane Numbers

    Arcane Numbers 1 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  5. 【数位DP】 HDU 4722 Good Numbers

    原题直通车: HDU  4722  Good Numbers 题意: 求区间[a,b]中各位数和mod 10==0的个数. 代码: #include<iostream> #include& ...

  6. HDU 3117 Fibonacci Numbers(围绕四个租赁斐波那契,通过计++乘坐高速动力矩阵)

    HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵高速幂) ACM 题目地址:HDU 3117 Fibonacci Numbers 题意:  求第n个斐波那契数的 ...

  7. HDOJ(HDU).1058 Humble Numbers (DP)

    HDOJ(HDU).1058 Humble Numbers (DP) 点我挑战题目 题意分析 水 代码总览 /* Title:HDOJ.1058 Author:pengwill Date:2017-2 ...

  8. Arcane Numbers 1

    Vance and Shackler like playing games. One day, they are playing a game called "arcane numbers& ...

  9. hdu 3117 Fibonacci Numbers 矩阵快速幂+公式

    斐波那契数列后四位可以用快速幂取模(模10000)算出.前四位要用公式推 HDU 3117 Fibonacci Numbers(矩阵快速幂+公式) f(n)=(((1+√5)/2)^n+((1-√5) ...

随机推荐

  1. CTF夺旗赛丨网络内生安全试验场第四季圣诞赛明日开赛!

    期待许久的圣诞狂欢就要来喽 <Jingle bell>欢快的旋律 在耳边翩翩起舞 白胡子老爷爷骑着麋鹿准时来送礼物 2019圣诞节 i 春秋做你的圣诞老人 参加CTF欢乐圣诞赛 你提交答案 ...

  2. JAVA总结--JDK版本区别

    jdk1.5的新特性:  1.泛型  2.自动拆箱装箱  3.foreach   4.静态导入(Static import) 此外,枚举.元数据(Metadata).线程池.Java Generics ...

  3. H-Updating a Dictionary (模拟)

    In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...

  4. 一步一步玩控件:自定义TabControl——从山寨Safari开始

    作者:野比 (conmajia@gmail.com) 时间:May, 2012 封面图片为野比原创,请勿未经允许私自引用 #1-1 嗯,各位,又是我,生物钟颠倒的家伙. 今天我要山寨的是大名鼎鼎的Ap ...

  5. 用Node.js原生代码实现静态服务器

    ---恢复内容开始--- 后端中服务器类型有两种 1. web服务器[ 静态服务器 ] - 举例: wamp里面www目录 - 目的是为了展示页面内容 - 前端: nginx 2. 应用级服务器[ a ...

  6. Web学习之JS总结

    银角大王武Sir的博客地址 银角大王武Sir的博客地址二 1.Javascript的作用域链 由于javascript没有块级作用域,而且每个函数作为一个作用域,如果出现嵌套函数,则就会出现作用域链 ...

  7. webpack 4.0 报错

    ERROR in multi ./src/entery.js dist/bundle.jsModule not found: Error: Can't resolve 'dist/bundle.js' ...

  8. HDU 4678 Mine(博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  9. Springboot 默认cache

    1:Springboot 默认缓存为ConcurrentMapCacheManager(spring-context) 2:再启动类上开启缓存 @SpringBootApplication //相当于 ...

  10. thinkphp 视图view

    一. 继承Controller类 <?php namespace app\index\controller; use http\Params; use think\Config; use thi ...