Cod sursa(job #750444)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 22 mai 2012 09:27:09
Problema Ratphu Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
using namespace std;
long long n;
int p,nrcif,cif[20],mask[20];
long long nr[263000][20];

int main()
{
	int i,j,conf,lim;
	ifstream fin("ratphu.in");
	fin>>n>>p;
	fin.close();
	
	while(n)
	{
		cif[nrcif++]=n%10;
		n/=10;
	}
	for(i=0;i<nrcif;i++)
	{
		mask[i]=(1<<i);
		nr[mask[i]][cif[i]%p]++;
	}
	lim=(1<<nrcif);
	for(conf=1;conf<lim;conf++)
	{
		for(i=0;i<p;i++)
		{
			if(nr[conf][i]==0)
				continue;
			for(j=0;j<nrcif;j++)
			{
				if(!(conf&mask[j]))
				{
					nr[conf|mask[j]][(i*10+cif[j])%p]+=nr[conf][i];
				}
			}
		}
	}
	
	ofstream fout("ratphu.out");
	fout<<nr[lim-1][0]<<"\n";
	fout.close();
	return 0;
}