Cod sursa(job #2606488)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 27 aprilie 2020 21:25:17
Problema Diviz Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#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;
}