Cod sursa(job #1706610)
| Utilizator | Data | 22 mai 2016 21:28:56 | |
|---|---|---|---|
| Problema | Ratphu | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <bits/stdc++.h>
#define maxN 20
using namespace std;
int i,j,v[maxN],nrc,p,maxC,mask;
long long dp[maxN+2][1<<maxN],n;
int main()
{
ifstream f("ratphu.in");
ofstream g("ratphu.out");
f>>n>>p;
while(n)
v[nrc++]=n%10,n/=10;
maxC=(1<<nrc);
dp[0][0]=1;
for(mask=0;mask<maxC-1;mask++)
for(i=0;i<nrc;i++)
if(!(mask&(1<<i)))
for(j=0;j<p;j++)
dp[(10*j+v[i])%p][mask|(1<<i)]+=dp[j][mask];
g<<dp[0][maxC-1];
return 0;
}
