Cod sursa(job #2337488)

Utilizator MYSOULBobei Razvan-Marian MYSOUL Data 6 februarie 2019 14:22:14
Problema Ratphu Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream fin("ratphu.in");
ofstream fout("ratphu.out");
int cifre[20],resturi[1<<18][20],puteri[20];
int nr_cifre(int x)
{
  int nr = -1;
  puteri[0] = 1;
  while(x)
  {
   cifre[++nr] = x%10;
   puteri[nr+1] = puteri[nr]*10;
   x/=10;
  }
 return nr+1;
}
int main()
{ int N , 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;
}