Pagini recente » Cod sursa (job #285973) | Cod sursa (job #2079565) | Cod sursa (job #1710565) | Cod sursa (job #1540637) | Cod sursa (job #465860)
Cod sursa(job #465860)
#include<stdio.h>
long long n,sol,psw[19];
int p,nc,prm[19],cif[19];
inline void OpenGate()
{
freopen("ratphu.in","r",stdin);
freopen("ratphu.out","w",stdout);
}
inline void ReadInput()
{
scanf("%lld%d",&n,&p);
}
inline void DecompInput()
{
nc=1;
while(n)
{
cif[nc++]=n%10;
n/=10;
}
--nc;
}
void ExtractCompare(int *vect)
{
long long val=0;
int i;
for(i=nc;i>0;--i)
val=val*10+cif[vect[i]];
printf("eval %lld ",val);
if(!(val%p))
{
// printf("add\n");
sol++;
}
else;
//printf("\n");
}
void GeneratePerms()
{
int i;
for(i=1;i<=nc;++i)
prm[i]=i;
int aux;
i=1;
psw[i]=0;
while(psw[nc-1]!=nc-1)
{
// printf("i:%d psw[i]:%lld\n",i,psw[i]);
aux=prm[i];
prm[i]=prm[i+1];
prm[i+1]=aux;
psw[i]++;
ExtractCompare(prm);
if(psw[i]>=i)
{
//reverse
if(i!=nc-1)
psw[i]=0;
++i;
}
else
{
i=1;
}
}
}
int main()
{
OpenGate();
ReadInput();
DecompInput();
GeneratePerms();
printf("%lld",sol);
return 0;
}