Pagini recente » Cod sursa (job #399347) | Cod sursa (job #2061827) | Cod sursa (job #2926379) | Cod sursa (job #2199004) | Cod sursa (job #465791)
Cod sursa(job #465791)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("ratphu.in","r");
FILE*g=fopen("ratphu.out","w");
int p,fr[15],fr2[15],aux,i,ii,vector[20],c;
long long n,nr,nn,maxim;
char ok;
int cmp (int a,int b){
return a > b;
}
int main () {
fscanf(f,"%lld %d",&n,&p);
nn = n;
if( p == 1 ){
while(n!=0){
n /= 10 ;
++c;
}
nr = 1 ;
for ( i = 1 ; i <= c ; ++i )
nr = nr * i ;
fprintf(g,"%lld",nr);
fclose(f);
fclose(g);
exit(0);
}
while(n!=0){
++fr[n%10] ;
n /= 10 ;
}
while ( nn != 0 ){
vector[++vector[0]] = nn%10 ;
nn /= 10 ;
}
sort(vector+1,vector+vector[0]+1,cmp);
for ( i = 1 ; i <= vector[0] ; ++i )
maxim = maxim * 10 + vector[i];
for ( i = 1 ; i * p <= maxim ; ++i ){
aux = i * p ;
while(aux!=0){
++fr2[aux%10] ;
aux /= 10 ;
}
ok=0;
for ( ii = 1 ; ii <= 10; ++ii ){
if( fr[ii] != fr2[ii] ){
ok = 1;
break;
}
}
if(ok == 0 )
++nr;
memset(fr2,0,sizeof(fr2));
}
for ( i = 0; i <= 10 ; ++i )
if( fr[i] != 0 && fr[i] != 1 )
for ( ii = 2; ii <= fr[i] ; ++ii )
nr *= ii ;
fprintf(g,"%lld",nr);
fclose(f);
fclose(g);
return 0;
}