Cod sursa(job #1739194)

Utilizator Bodo171Bogdan Pop Bodo171 Data 8 august 2016 20:09:03
Problema Ratphu Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include<fstream>
using namespace std;
int i,j,l,k,p,pu[20];
int modes[(1<<18)][25],cat[(1<<18)][25],v[19],i1,j1;
long long n;
const int mod=1000000007;
long long rasp;
int main()
{
    ifstream f("ratphu.in");
    ofstream g("ratphu.out");
    f>>n;
    f>>p;
    while(n!=0)
    {
        v[k]=n%10;
        k++;
        n/=10;
    }
    modes[0][0]=1;
    pu[0]=1;
    for(i=1;i<=18;i++) pu[i]=2*pu[i-1];
    for(i=0;i<pu[k];i++)
    {

          for(j=0;j<p;j++)
            {
            if(modes[i][j]!=0||cat[i][j]!=0)
             for(l=0;l<k;l++)
                if((i&pu[l])==0)
               {
                i1=i+pu[l],j1=(j*10+v[l])%p;
                modes[i1][j1]+=modes[i][j];
                if(modes[i1][j1]>=mod)
                {
                    modes[i1][j1]-=mod;
                    cat[i1][j1]++;
                }
             }
            }
    }
    rasp=(1LL)*cat[pu[k]-1][0]*mod+modes[pu[k]-1][0];
    g<<rasp;
    return 0;
}