#include #include #include using namespace std; __int64 a,b,k,num,dp[20][25],d[20][25],C[20],r[20][25],A[20]; __int64 dfs(__int64 now,__int64 left) { if(now<0) return 0; __int64 sum=0,i,j,ii; for(i=0;i0) ii--; sum+=ii*dp[now][((k-j)%k+k)%k]; } if(now!=num) sum+=d[now][((k-left)%k+k)%k]; sum+=dfs(now-1,(left*10+A[now])%k); return sum; } void dfs2() { __int64 i,j,now; memset(C,0,sizeof(C)); C[0]=1%k; for(i=1;i<18;i++) C[i]=(C[i-1]*10)%k; for(i=0;i<=A[0];i++) d[0][i%k]++; for(now=1;now<=num;now++) { for(j=0;j