Cod sursa(job #81300)

Utilizator ScrazyRobert Szasz Scrazy Data 1 septembrie 2007 10:19:15
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>

long r, p1, p2 ,p, s1, s2; 
int c;

long faktor(long r, int d)
{
    long x=0, y=0;
    while (y=r=r/d) x+=y;
    return x;
} 

int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);

    scanf("%ld %d", &r, &c);

    long i,o;

    o=0;

    if (c==2 || c==3 || c==5)
    { 
	p=faktor(r,c);
	for (i=0; i<r+1; ++i)
	{
	    p1=faktor(r-i,c);
	    p2=faktor(i,c);
	    if (p1+p2 < p) ++o;
	}
    }
    else if (c==4)
    {
	p=faktor(r,c)/2;
	for (i=0; i<r+1; ++i)
	{
	    p1=faktor(r-i,c)/2;
	    p2=faktor(i,c)/2;
	    if (p1+p2 < p) ++o;
	}
    }
    else if (c==6)
    {
	s1=faktor(r,2);
	s2=faktor(r,3);
	p=s1 < s2 ? s1:s2;
	for (i=0; i<r+1; ++i)
	{ 
	    s1=faktor(r-i,2);
	    s2=faktor(r-i,3);
	    p1=s1 < s2 ? s1:s2;
	    s1=faktor(i,2);
	    s2=faktor(i,3);
	    p2=s1 < s2 ? s1:s2;

	    if (p1+p2 < p) ++o;
	}

    }

    printf("%ld", o);

    fclose(stdin);
    fclose(stdout);

    return 0;

}