Cod sursa(job #2649801)

Utilizator BogdanTicuTicu Bogdan Valeriu BogdanTicu Data 16 septembrie 2020 14:38:34
Problema Ratphu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("ratphu.in");
ofstream out("ratphu.out");


long long dp[(1<<19)][21];
int cifre[21];
int rest[301];
int k=0;

int main()
{
	long long n;
	int p;
	in>>n>>p;
	dp[0][0]=1;

	while(n)
	{
		cifre[++k]=n%10;
		n/=10;
	}
	
	for(int i=1;i<=300;i++)
		rest[i]=i%p;
	for(int masca=0;masca<=(1<<k)-1;masca++)
	{
		for(int restt=0;restt<p;restt++)
		{
			if(dp[masca][restt]>0)
			{
				for(int bit=0;bit<k;bit++)
				{
					if((masca & (1<<bit)) ==0)
						dp[(masca^(1<<bit))][rest[restt*10+cifre[bit+1]]]+=dp[masca][restt];
				}
			}
		}
	}
	out<<dp[(1<<k)-1][0]<<"\n";

	return 0;
}