Pagini recente » Cod sursa (job #708304) | Cod sursa (job #1822297) | Cod sursa (job #2397516) | Cod sursa (job #2218388) | Cod sursa (job #1319203)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
string sString;
int p;
long long BST[1<<18][21];
//---------------------------------------------------------------------------------
void Solve ()
{
for( size_t i=0 ; i < sString.size() ; ++i )
{
sString[i]=(sString[i]-'0')%p;
BST[1<<i][sString[i]]=1;
}
for( int i=0 ; i < (1<<sString.size()) ; ++i )
for( int j=0 ; j < sString.size() ; ++j )
if( (i&(1<<j)) == 0 )
for( int k=0 ; k < p ; ++k )
{
int x=k*10+sString[j];
for( ; x >= p ; x-=p );
BST[i|(1<<j)][x]+=BST[i][k];
}
}
//---------------------------------------------------------------------------------
int main ()
{
ifstream fin ("ratphu.in");
fin>>sString>>p;
Solve ();
ofstream fout ("ratphu.out");
fout<<BST[(1<<sString.size())-1][0];
return 0;
}