Pagini recente » Cod sursa (job #3289226) | Cod sursa (job #1802115) | Cod sursa (job #2160026) | Cod sursa (job #2348676) | Cod sursa (job #1141358)
#include <fstream>
#include <string.h>
#define MOD 30103
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
short int s[202];
short int cif[202][10],i,j,n,a1,b1,k,a[202][101],b[202][101],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=l-1;i<=n;i++){
if(l>a1)
suma=(suma+a[i][0])%MOD;
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=l;i<=n;i++)
suma=(suma+b[i][0])%MOD;
}*/
memcpy(a,b,sizeof(b));
}
g<<suma;
return 0;
}