Cod sursa(job #1383622)

Utilizator madalomarMadalomar madalomar Data 10 martie 2015 14:38:16
Problema Diviz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.97 kb
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int k,p,u,i,j,poz,c,r,ii,b[201][100],a[201][100],n,pp[200][10],v[201];
char s[201];
int main()
{
    fin>>k>>p>>u;
    fin>>s+1;
    n=strlen(s+1);
    for(i=0;i<=9;i++)
        for(j=0;j<n;j++)
            for(ii=j+1;ii<=n;ii++)
            {
                if(s[ii]-'0'==i)
                {
                    pp[j][i]=ii;
                    break;
                }
            }

        /*for(poz=1;poz<=n;poz++)
        {
            if(s[poz]-'0')
            {
                a[poz][(s[poz]-'0')%k]++;
            }
            v[1]+=a[poz][0];
        }*/
        for(c=1;c<=9;c++)
        {
            poz=pp[0][c];
            if(poz)
            {
                a[poz][c%k]++;
            }
            v[1]+=a[poz][0];
        }
for(int l=1;l<=n;l++)
        {
            for(int c=0;c<k;c++)
                fout<<a[l][c]<<' ';
            fout<<'\n';
        }
        fout<<'\n';
    for(i=2;i<n;i++)
    {
        for(j=i-1;j<n;j++)
        {
            for(c=0;c<=9;c++)
            {
                poz=pp[j][c];
                if(poz)
                {
                    for(r=0;r<k;r++)
                    {
                        if(a[j][r]!=0)
                        {
                            b[poz][(r*10+c)%k]+=a[j][r];
                            b[poz][(r*10+c)%k]%=30103;
                        }
                    }
                }
                v[i]+=b[poz][0]%30103;
                v[i]%=30103;
            }
        }
        memcpy(a,b,sizeof(a));
        memset(b,0,sizeof(b));
        /*for(int l=1;l<=n;l++)
        {
            for(int c=0;c<k;c++)
                fout<<a[l][c]<<' ';
            fout<<'\n';
        }
        fout<<'\n';*/
    }
    int sol=0;

    for(i=p;i<=u;i++)
        sol+=v[i]%30103;
    fout<<sol%30103;
    return 0;
}