Pagini recente » Cod sursa (job #2463979) | Cod sursa (job #2830032) | Cod sursa (job #2021670) | Cod sursa (job #2271817) | Cod sursa (job #1141830)
#include<fstream>
#include<cstring>
using namespace std;
# define MOD 30103
int k, A, B, s[203], i, j, l, p, n, cif[203][10], a[203][101], b[203][101], sol;
char x;
ifstream in("diviz.in");
ofstream out("diviz.out");
int main(){
in>>k>>A>>B;
while(in>>x){
s[++n]=x-'0';
}
for(i=n-1; i>=0; i--){
memcpy(cif[i], cif[i+1], sizeof(cif[i+1]));
cif[i][s[i+1]]=i+1;
}
for(i=1;i<=9;i++)
if(cif[0][i]!=0)
a[cif[0][i]][i%k]++;
for(l=2;l<=B;l++){
memset(b,0,sizeof(b));
for(i=1;i<=n;i++)
for(j=0;j<=k-1;j++)
if(a[i][j]!=0)
{
for(p=0;p<=9;p++)
if(cif[i][p]!=0)
b[cif[i][p]][(j*10+p)%k]=(b[cif[i][p]][(j*10+p)%k]+a[i][j])%MOD;
}
if(l>=A)
//adunam ce avem pe coloana 0 in b
for(j=0;j<=n;j++)
sol=(sol+b[j][0])%MOD;
memcpy(a,b,sizeof(b));
}
out<<sol;
return 0;
}