求正解!
代码:
#include<bits/stdc++.h>
#define int long long
#define mod 999911659
using namespace std;
int n,p,A[500][15][15],B[500][15][15],ans;
int qpow(int a,int b){
int s=1;
while(b){
if(b&1LL) s=s*a%p;
a=a*a%p;
b>>=1LL;
}
return s;
}
void dfs(int n){
if(n==1LL){
for(int i=0;i<=9;i++) B[i%p][i][i]++;
return;
}
dfs(n>>1LL);
swap(A,B);
memset(B,0,sizeof(B));
int base=qpow(10,n>>1LL);
if(n&1LL){
for(int i=0;i<=p;i++){
for(int j=0;j<=p;j++){
for(int a=0;a<=9;a++){
for(int b=a;b<=9;b++){
for(int c=b;c<=9;c++){
for(int d=c;d<=9;d++){
for(int e=d;e<=9;e++) (B[(i*base*10+j*10+e)%p][a][e]+=A[i][a][b]*A[j][c][d])%=mod;
}
}
}
}
}
}
}else{
for(int i=0;i<=p;i++){
for(int j=0;j<=p;j++){
for(int a=0;a<=9;a++){
for(int b=a;b<=9;b++){
for(int c=b;c<=9;c++){
for(int d=c;d<=9;d++) (B[(i*base+j)%p][a][d]+=A[i][a][b]*A[j][c][d])%=mod;
}
}
}
}
}
}
}
signed main(){
scanf("%lld%lld",&n,&p);
dfs(n);
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++) ans+=B[0][i][j];
}
printf("%lld",ans%mod);
return 0;
}