FZU 1896 — 神奇的魔法数
来源:互联网 发布:去马赛克软件有用吗 编辑:程序博客网 时间:2024/05/01 07:38
原题:http://acm.fzu.edu.cn/problem.php?pid=1896
思路:
dp[i][j]表示前i位且最高位为j的魔法数个数;
然后将范围相减;
#include<stdio.h>#include<math.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int dp[15][15];int m;void pre(){for(int i = 0;i<10;i++)dp[1][i] = 1;for(int i = 2;i<12;i++){for(int j = 0;j<10;j++){for(int k = 0;k<10;k++){if(abs(j-k)>=m)dp[i][j]+=dp[i-1][k];}}}}int find(int x){int a[15], t = 0;int ans = 0;memset(a, 0, sizeof(a));while(1){a[++t] = x%10;x/=10;if(x == 0)break;}for(int i = 1;i<t;i++){for(int j = 1;j<10;j++)ans+=dp[i][j];}for(int i = 1;i<a[t];i++)ans+=dp[t][i];for(int i = t-1;i>=1;i--){for(int j = 0;j<a[i];j++){if(abs(j-a[i+1])>=m)ans+=dp[i][j];}if(abs(a[i]-a[i+1])<m)break;}return ans;}int main(){int cas;scanf("%d", &cas);while(cas--){memset(dp, 0, sizeof(dp));int u, v;scanf("%d%d%d", &u, &v, &m);pre();printf("%d\n", find(v+1)-find(u));}return 0;}
0 0
- FZU 1896 — 神奇的魔法数
- FZU - 1896 神奇的魔法数
- FZU 1896 神奇的魔法数( 组队题 )
- FZU 1896 神奇的魔法数 数位DP
- 神奇的魔法数
- fzu 1896 神奇的魔法数字(数位dp)
- [FOJ 1896] 神奇的魔法数
- 神奇的“魔法代码”-JavaScript
- JavaScript神奇的魔法代码
- 神奇的JS“魔法代码”
- JavaScript神奇的魔法代码 .
- JavaScript神奇的魔法代码
- FZU 1538 神奇的数列
- FZU Problem 2223 神奇的计算器
- 神奇的浮点数
- 神奇的catalan数
- 神奇的Catalan数
- 神奇的花朵数
- Hibernate延迟加载-by宋迪
- JAVA Instrumentation简介
- Code::Blocks + CygWin开发环境配置
- IOS8开发中的新特性
- 重写HashCode的内存变化过程以及两种重写hashCode方式的比较
- FZU 1896 — 神奇的魔法数
- Cocos Touch 基础知识
- 双向链表的插入与删除
- 网络字节顺序
- 网页性能之Html Css Javascript
- 上传弹出窗(仿百度云)V_1(学习)
- (10.1.3)扁平化设计五大原则
- 乾坤合一~Linux设备驱动之块设备驱动
- Spring MVC 简介