Pagini recente » Cod sursa (job #2905467) | Cod sursa (job #3273420) | Cod sursa (job #924277) | Cod sursa (job #1536213) | Cod sursa (job #2606488)
#include <bits/stdc++.h>
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int k,a,b,lung;
long long mat[2][205][105],sol;
bool OK=1;
string s;
void init()
{
for(int i=1;i<=200;i++)
for(int j=0;j<=100;j++)
mat[1-OK][i][j]=0;
}
int main()
{
f>>k>>a>>b;
f>>s;
lung=s.length();
///mai mici sau egale decat b
for(int p=0;p<lung;p++)
{
init();
int cif=s[p]-'0';
for(int i=1;i<b;i++)
for(int j=0;j<k;j++)
mat[1-OK][i+1][(j*10+cif)%k]+=mat[OK][i][j];
for(int i=1;i<=b;i++)
for(int j=0;j<k;j++)
mat[1-OK][i][j]+=mat[OK][i][j];
if(cif==0&&a==1) sol++;
else if(cif!=0) mat[1-OK][1][cif%k]++;
OK=1-OK;
}
for(int i=a;i<=b;i++)
sol+=mat[OK][i][0];
g<<sol;
}