常规:
#include <cstdio>
const int Max=1e2+5;
int N,Len,Ans,Bit[Max],DP[Max][Max][3];
int DFS(int Pos,int Mod,int Have,int Lim){
int I,J,K,Num,Ans,Mod_X,Have_X;
if(Pos<=0){
return Mod==0&&Have==2;
}
if(!Lim&&DP[Pos][Mod][Have]!=0){
return DP[Pos][Mod][Have];
}
Num=Lim?Bit[Pos]:9;Ans=0;
for(I=0;I<=Num;I++){
Mod_X=(Mod*10+I)%13;Have_X=Have;
if(Have==0&&I==1){
Have_X=1;
}
if(Have==1&&I!=1){
Have_X=0;
}
if(Have==1&&I==3){
Have_X=2;
}
Ans+=DFS(Pos-1,Mod_X,Have_X,Lim&&I==Num);
}
if(!Lim){
DP[Pos][Mod][Have]=Ans;
}
return Ans;
}
int main(){
int I,J,K;
scanf("%d",&N);
while(N){
Bit[++Len]=N%10;N/=10;
}
printf("%d",DFS(Len,0,0,1));
return 0;
}