神奇的魔法数
来源:互联网 发布:微博上淘宝优惠券 编辑:程序博客网 时间:2024/04/26 23:07
神奇的魔法数
1000ms
32768KB
This problem will be judged on FZU. Original ID: 1896
64-bit integer IO format: %I64d Java class name: Main
64-bit integer IO format: %I64d Java class name: Main
Font Size:
Input
Output
Sample Input
71 10 21 20 31 100 010 20 420 30 51 10 911 100 9
Sample Output
9151005391
Source
#include <iostream>#include<stdio.h>#include<string.h>#include<cmath>#include<queue>#include<string>#include<algorithm>using namespace std;int dp[11][10]; /// 位数 首位int m;void fun(){ memset(dp,0,sizeof(dp)); for(int i=0; i<=9; i++) dp[1][i]=1; for(int i=2; i<=10; i++) for(int j=0; j<=9; j++) for(int k=0; k<=9; k++) if(abs(j-k)>=m) dp[i][j]+=dp[i-1][k];}int slove(int x){ int len=0,sum=0,bit[15]; while(x) { bit[++len]=x%10; x=x/10; } for(int i=1; i<len; i++) ///处理最高位的后面位 len-1 位 for(int j=1; j<10; j++) sum+=dp[i][j]; for(int i=1; i<bit[len]; i++) /// 处理最高位 下不同的首位 sum+=dp[len][i]; for(int i=len-1; i>0; i--) /// 在处理相邻为 { for(int j=0; j<bit[i]; j++) if(abs(j-bit[i+1])>=m) sum+=dp[i][j]; if(abs(bit[i]-bit[i+1])<m) break; } return sum;}int main(){ int t,a,b; scanf("%d",&t); while(t--) { scanf("%d%d%d",&a,&b,&m); fun(); printf("%d\n",slove(b+1)-slove(a)); } return 0;}
0 0
- 神奇的魔法数
- FZU - 1896 神奇的魔法数
- FZU 1896 — 神奇的魔法数
- [FOJ 1896] 神奇的魔法数
- FZU 1896 神奇的魔法数( 组队题 )
- FZU 1896 神奇的魔法数 数位DP
- 神奇的“魔法代码”-JavaScript
- JavaScript神奇的魔法代码
- 神奇的JS“魔法代码”
- JavaScript神奇的魔法代码 .
- JavaScript神奇的魔法代码
- 神奇的浮点数
- 神奇的catalan数
- 神奇的Catalan数
- 神奇的花朵数
- Universe7的神奇数
- 【BZOJ3669】NOI2014-魔法森林(神奇的解法)
- fzu 1896 神奇的魔法数字(数位dp)
- git免输入登录名和密码
- uva 639(回溯)
- CodeForces 449A Jzzhu and Chocolate
- STL基础系列之--vector
- HDU 4901 The Romantic Hero
- 神奇的魔法数
- 黑马程序员—JAVA高新技术_JDK1.5新特性
- 校验和算法
- 电饭锅电饭锅电饭锅如果是电饭锅是的
- 设计模式之责任链模式
- 分光化影天宇天宇天宇通用
- hdu 2829 Lawrence
- python程序的调试方法
- ContentProvider中getType方法的作用