HDU-4722 Good Numbers 数位DP
2013-09-13 00:35
507 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722
简单的数位DP,f[i][j][k]表示第 i 位数为 j 时余数为k的个数,然后直接找就可以了。。
简单的数位DP,f[i][j][k]表示第 i 位数为 j 时余数为k的个数,然后直接找就可以了。。
//STATUS:C++_AC_31MS_412KB #include <algorithm> #include <iostream> //#include <ext/rope> #include <fstream> #include <sstream> #include <iomanip> #include <numeric> #include <cstring> #include <cassert> #include <cstdio> #include <string> #include <vector> #include <bitset> #include <queue> #include <stack> #include <cmath> #include <ctime> #include <list> #include <set> #include <map> using namespace std; //#pragma comment(linker,"/STACK:102400000,102400000") //using namespace __gnu_cxx; //define #define pii pair<int,int> #define mem(a,b) memset(a,b,sizeof(a)) #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define PI acos(-1.0) //typedef typedef __int64 LL; typedef unsigned __int64 ULL; //const const int N=25; const int INF=0x3f3f3f3f; const int MOD=1000000007,STA=8000010; const LL LNF=1LL<<60; const double EPS=1e-8; const double OO=1e15; const int dx[4]={-1,0,1,0}; const int dy[4]={0,1,0,-1}; const int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //Daily Use ... inline int sign(double x){return (x>EPS)-(x<-EPS);} template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;} template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;} template<class T> inline T lcm(T a,T b,T d){return a/d*b;} template<class T> inline T Min(T a,T b){return a<b?a:b;} template<class T> inline T Max(T a,T b){return a>b?a:b;} template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);} template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);} template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));} template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));} //End LL f ; LL a,b; int num ; int T; int getnum(LL n) { int i,len=0; while(n){ num[++len]=n%10; n/=10; } return len; } LL getans(LL n) { int i,j,len,sum=0; LL ret=0; len=getnum(n); for(i=len;i>=1;i--){ for(j=0;j<=num[i];j++){ if(j==num[i] && i!=1)continue; ret+=f[i][j][(10-sum)%10]; } sum=(sum+num[i])%10; } return ret; } int main(){ // freopen("in.txt","r",stdin); int i,j,k,p,q,ca=1; LL ansb,ansa; mem(f,0);f[0][0][0]=1; for(i=1;i<=19;i++){ for(j=0;j<=9;j++){ for(k=0;k<=9;k++){ for(p=0;p<=9;p++){ f[i][j][k]+=f[i-1][p][(k-j+10)%10]; } } } } scanf("%d",&T); while(T--) { scanf("%I64d%I64d",&a,&b); ansb=(b>0)?getans(b):1; ansa=(a-1>0)?getans(a-1):a; printf("Case #%d: %I64d\n",ca++,ansb-ansa); } return 0; }
相关文章推荐
- [数位dp] hdu 4722 Good Numbers
- HDU 4722 Good Numbers(数位DP)
- hdu 4722 Good Numbers(数位dp)
- HDU 4722 Good Numbers(数位DP)
- hdu 4722 Good Numbers 数位dp
- HDU 4722 Good Numbers 数位dp或找规律枚举 数位dp感悟
- hdu 4722 Good Numbers(数位dp)
- hdu 4722 Good Numbers 数位DP
- hdu 4722 Good Numbers 数位dp
- HDU 4722 Good Numbers (数位dp)
- HDU 4722-Good Numbers-数位dp
- hdu 4722 Good Numbers(找规律,记忆化搜索,数位dp)
- hdu 4722 Good Numbers(初涉数位dp)
- 【数位DP】 HDU 4722 Good Numbers
- hdu 4722 Good Numbers 数位dp(2013 ACM/ICPC Asia Regional Online —— Warmup2 1007)
- hdu 4722 Good numbers(数位DP)
- HDU 4722 Good Numbers(位数DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)
- HDOJ 4722 - Good Numbers 数位dp
- HDU 4722:Good Numbers(数位DP)
- HDU 4722 (数位DP 水~)