云盘

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int dp[12][10];
int m;
void init()
{
    memset(dp,0,sizeof(dp));
    for(int i=0;i<=9;i++){
        dp[1][i]=1;
    }
    for(int i=2;i<=11;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];
            }
            printf("a[i]==%d\n",dp[i][j]);
        }

    }
}
int solve(int n){
    int c[20];
    int len=0;
    while(n){
        c[++len]=n%10;
        n/=10;
    }
    int ans=0;
    for(int i=len;i>=1;i--){
        for(int j)
        for(int j=0;j<=9;j++){
            if(abs(c[i]-j)>=m)
            ans+=dp[i-1][j];
        }
    }
    return ans;
}
int main()
{
    int t,l,r;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d",&l,&r,&m);
        init();
        int r1=solve(r);
        int l1=solve(l-1);
        printf("%d %d\n",l1,r1);
        int ans=r1-l1;
        printf("%d\n",ans);
    }
}

posted @ 2016-04-21 21:34  Alan2  阅读(199)  评论(0编辑  收藏  举报