Pagini recente » Cod sursa (job #254442) | Cod sursa (job #1744022) | Cod sursa (job #1845467) | Cod sursa (job #1679020) | Cod sursa (job #1141341)
#include <fstream>
#include <string.h>
#define MOD 30103
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int s[202];
int cif[202][10],i,j,n,a1,b1,k,a[202][10],b[202][10],l,p,suma;
char ch;
int main()
{
f>>k>>a1>>b1;
while(f>>ch)
s[++n]=ch-'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<=b1;l++){
memset(b,0,sizeof(b));
// parcurgem matricea a
for(i=1;i<n;i++)
for(j=0;j<=k-1;j++)
if(a[i][j]!=0){
//parcurgem linia i a lui cif
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>=a1){
for(i=0;i<=n;i++)
suma=(suma+b[i][0])%MOD;
}
memcpy(a,b,sizeof(b));
}
g<<suma;
return 0;
}