Cod sursa(job #2337571)

Utilizator MYSOULBobei Razvan-Marian MYSOUL Data 6 februarie 2019 15:43:14
Problema Ratphu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int cifre[18];
long long resturi[1<<18][20];
int nr_cifre(long long x)
{
  int nr = -1;
  while(x)
  {
   cifre[++nr] = x%10;
   x/=10;
  }
 return nr+1;
}
int main()
{ long long N;
  int P;
  fin >> N >> P;
  int n = nr_cifre(N);
  for(int i = 0 ; i < n ; i ++)
    resturi[1<<i][cifre[i]%P] = 1 ;
  for(int configuratie = 1 ; configuratie < (1<<n)-1 ; configuratie++)
   for(int i = 0 ; i < P ; i++)
    if(resturi[configuratie][i])
     for(int j = 0 ; j < n ; j++)
      if((configuratie|(1<<j)) != configuratie)
        resturi[configuratie|(1<<j)][(10*i+cifre[j])%P] += resturi[configuratie][i] ;
  fout << resturi[(1<<n)-1][0] << "\n";
    return 0;
}