理解了模版就行,固定写法
模版:http://blog.csdn.net/hzh_0000/article/details/16117351
AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long dp[20][11];
int digit[20], tot;
long long A, B;
long long DFS( int pos, int premod, bool statu ){
if( pos <= 0 ){
return premod == 0;
}
if( !statu && dp[pos][premod] != -1 ){
return dp[pos][premod];
}
long long ans = 0;
int end = statu ? digit[pos] : 9;
for( int i = 0; i <= end; i++ ){
ans += DFS( pos - 1, ( premod + i ) % 10, statu && ( i == end ) );
}
return dp[pos][premod] = ans;
}
long long solve( long long N ){
memset( dp, -1, sizeof( dp ) );
tot = 0;
while( N ){
digit[++tot] = N % 10;
N /= 10;
}
return DFS( tot, 0, true );
}
int main(){
int T, Case = 1;
cin >> T;
while( T-- ){
cin >> A >> B;
if( A == 0 ){
cout << "Case #" << Case++ << ": " << solve( B ) << endl;
}else{
cout << "Case #" << Case++ << ": " << solve( B ) - solve( A - 1 ) << endl;
}
}
return 0;
}