Pagini recente » Istoria paginii runda/summerchallenge2renasterea/clasament | Istoria paginii runda/kontrollarbeit/clasament | Profil lil_bloc | Istoria paginii runda/kek/clasament | Cod sursa (job #846579)
Cod sursa(job #846579)
#include<stdio.h>
#include<cstring>
FILE*f=fopen("ratphu.in","r");
FILE*g=fopen("ratphu.out","w");
int n,p;
int mod[305];
char sir[20];
long long D[20][1<<17];
int main () {
fscanf(f,"%s %d",sir,&p);
n = strlen(sir);
for ( int i = 0 ; i < n ; ++i ){
sir[i] -= '0';
D[sir[i]%p][1<<i] = 1;
}
for ( int i = 0 ; i <= 300 ; ++i ){
mod[i] = i % p;
}
for ( int conf = 1 ; conf < (1<<n) ; ++conf ){
if ( !(conf & (conf-1)) ){
continue ;
}
for ( int i = 0 ; i < n ; ++i ){
if ( conf & (1<<i) ){
int previous = conf ^ (1<<i);
for ( int rest = 0 ; rest < p ; ++rest ){
D[mod[rest*10+sir[i]]][conf] += D[rest][previous];
}
}
}
}
fprintf(g,"%lld\n",D[0][(1<<n)-1]);
fclose(f);
fclose(g);
return 0;
}