Cod sursa(job #593171)

Utilizator SpiderManSimoiu Robert SpiderMan Data 1 iunie 2011 17:16:09
Problema Rays Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
# include <cstdio>
# include <string>

const char FIN[] = "ratphu.in", FOU[] = "ratphu.out" ;
const int MAX = 20 ;

long long sol[1 << MAX][MAX] ;
char N[MAX];
int P;

int main()
{
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    scanf ( "%s %d", &N, &P ) , sol[0][0] = 1 ;

    int k = strlen ( N ) ;

    for (int L = 0; L < 1 << k; ++L)
        for (int C = 0; C < P; ++C)
            if ( sol[ L ][ C ] )
                for (int i = 0; i < k; ++i)
                    if ( ( L & ( 1 << i ) ) == 0 )
                        sol [ L | ( 1 << i ) ] [ ( C * 10 + N[i] - '0' ) % P ] += sol[ L ][ C ] ;


    printf ( "%lld", sol [ ( 1 << k ) - 1 ] [ 0 ] ) ;

    return 0;
}