Cod sursa(job #741227)

Utilizator SmarandaMaria Pandele Smaranda Data 25 aprilie 2012 18:24:10
Problema Ratphu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
#include<cstring>
using namespace std;
long dp[300000][20];
char s[20];
long c[20];
int main () {
	long p,n,lim,i,j,k,l,conf,r;
	
	freopen("ratphu.in","r",stdin);
	freopen("ratphu.out","w",stdout);
	
	scanf("%s",&s);
	l=strlen(s);
	for (i=0;i<l;i++) 
		c[i+1]=s[i]-'0';
	scanf("%ld",&p);
	n=l;
	lim=(1u<<n)-1;
	dp[0][0]=1;
	for (i=0;i<=lim;i++)
		for (j=0;j<p;j++)
			if (dp[i][j])
				for (k=0;k<n;k++)
					if (!(i&(1u<<k))) {
						conf=i|(1u<<k);
						r=(j*10+c[k+1])%p;
						dp[conf][r]+=dp[i][j];
					}
	printf("%ld\n",dp[lim][0]);
	return 0;
}