Cod sursa(job #465651)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 25 iunie 2010 11:05:21
Problema Ratphu Scor 40
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 0.89 kb
#include<fstream.h>
ifstream f("ratphu.in");
ofstream g("ratphu.out");
char c;
int p,v[20],l=0,sir[30],ap1[20],ap2[20];
short x[30];
unsigned long long sol,nr;
int cifra(char c)
{
    if(c>='0' && c<='9') return 1;
    return 0;
}



//back-ul
void back(int k)
{
    int i;
    if(k>l){
        nr=0;
        for(i=1;i<=l;++i) nr=nr*10+sir[i];
        if(nr%p==0) ++sol;
    }
    else
        for(i=1;i<=l;++i){
            if(x[i]==0){
                x[i]=1;
                ++ap2[v[i]];
                sir[k]=v[i];
                if(ap2[v[i]]<=ap1[v[i]]) back(k+1);
                --ap2[v[i]];
	    		x[i]=0;
            }
		}
}



int main()
{
    c='\0';
    while(c!=' ')
    {
        c=f.get();
        if(cifra(c))
        {
            v[++l]=c-'0';
            ++ap1[c-'0'];
        }
    }
    f>>p;
    back(1);
    g<<sol;
    return 0;
}