标签:style blog color io os for sp div on
挺裸的 ,只要注意到当k超过9*10 就直接输出0就可以了。
#include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #include <set> #include <queue> #include <stack> #include <math.h> using namespace std; typedef long long LL; LL dp[15][150][150]; LL k; LL path[1000]; LL gao(LL x, LL sum, LL mod, LL flag) { if (~dp[x][sum][mod]&&!flag) return dp[x][sum][mod]; if (x == 0){ if (sum%k == 0 && mod == 0) return 1; else return 0; } LL bound = flag ? path[x] : 9; LL ans = 0; for (LL i = 0; i <= bound; i++){ // if((mod* 10+ i ) % k > 100) continue; ans += gao(x - 1, sum + i, (mod * 10 + i) % k, flag && (i == bound)); } return flag?ans : dp[x][sum][mod] = ans; } LL solve(LL x) { LL ret = 0; while (x){ path[++ret] = x % 10; x /= 10; } return gao(ret, 0, 0, 1); } int main() { LL a, b; LL Icase; cin >> Icase; while (Icase--){ cin >> a >> b >> k; if(k>90){ cout<<0<<endl; continue; } memset(dp,-1,sizeof(dp)); cout << solve(b) - solve(a - 1) << endl; } return 0; }
标签:style blog color io os for sp div on
原文地址:http://www.cnblogs.com/yigexigua/p/4018413.html