Cod sursa(job #478575)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 19 august 2010 11:23:41
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<cstdio>
#include<cstring>

int i,j,n,p,m,put;
char c[30];
long long a[300000][25];

int main()
{
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);

    scanf("%s",c);
    scanf("%d",&p);
    n=strlen(c);
    if(c[n]=='\n') --n;

    for(i=0;i<n;++i) c[i]-='0';

    for(i=0;(1<<i)<(1<<n);++i)
    a[1<<i][int(c[i])%p]=1;

    m=1<<n;
    for(i=1;i<m;++i)
        for(j=1,put=0;j<m;++put,j<<=1)
            if(!(i&j))
                for(int k=0;k<p;++k) a[i+j][ (k*10+c[put])%p ]+=a[i][k];


    printf("%lld\n",a[m-1][0]);
    fclose(stdin);
    fclose(stdout);

    return 0;
}