Cod sursa(job #1417474)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 10 aprilie 2015 13:47:34
Problema Ratphu Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.67 kb
#include<fstream>
using namespace std;
long long n;
int p,nrcif,cif[20];
long long nr[263000][20];

int main()
{
	int i,j,r,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++)
		nr[(1<<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&(1<<j)))
				{
					r=i*10+cif[j];
					while(r>=p)
						r-=p;
					nr[conf|(1<<j)][r]+=nr[conf][i];
				}
			}
		}
	}
	
	ofstream fout("ratphu.out");
	fout<<nr[lim-1][0]<<"\n";
	fout.close();
	return 0;
}