Cod sursa(job #2118725)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 30 ianuarie 2018 21:46:32
Problema Diviz Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int k,a,b,i,j,l,p,nr,sum,ind,x[2][201][101],y[201][10];
char s[201];
int main()
{
    f>>k>>a>>b;
    f>>s;nr=strlen(s);
    for(i=nr-1;i>=0;i--){
        for(j=0;j<=9;j++)
            y[i][j]=y[i+1][j];
        y[i][s[i]-'0']=i+1;
    }
    if(a==1&&y[0][0]!=0)
        sum++;
    for(i=1;i<=9;i++)
        if(y[0][i]!=0){
            if(a==1&&i%k==0)
                sum++;
            x[0][y[0][i]][i%k]=1;
        }
    ind=1;
    for(p=2;p<=b;p++){
        for(i=p-1;i<=nr;i++)
            for(j=0;j<k;j++)
                if(x[1-ind][i][j]!=0){
                    for(l=0;l<=9;l++)
                        if(y[i][l]!=0)
                            x[ind][y[i][l]][(j*10+l)%k]=(x[ind][y[i][l]][(j*10+l)%k]+x[1-ind][i][j])%30103;
                    x[1-ind][i][j]=0;
                }
        if(p>=a){
            for(i=p;i<=nr;i++)
                sum=(sum+x[ind][i][0])%30103;
        }
        ind=1-ind;
    }
    g<<sum;
    return 0;
}