Cod sursa(job #465704)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 25 iunie 2010 12:18:48
Problema Ratphu Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 2.13 kb
#include<cstdio>
#include<string.h>
using namespace std;

int a[20],v[20];
char sir[22];
long long rez;

long long fact (int n)
{
    long long rezult=1;
    for (int i=2; i<=n; i++)
        rezult*=i;
    if (n==0) return 1;
    return rezult;
}
int main ()
{
    int ka1,ka2,ok,n,nr,i,cont,sum_cif;
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    scanf("%s",&sir);
    ok=0; ka1=0; ka2=0;
    for (i=0; i<strlen(sir); i++)
    {
        if (sir[i]==' ') ok=1;
        else if (ok==0)
            v[++ka1]=int(sir[i])-'0';
    }
    scanf("%d",&nr);
    n=ka1;
    if (nr==2)
    {
        cont=0;
        for (i=1; i<=n; i++)
            if (v[i]%2==0) cont++;
        rez=fact(n-1)*cont;
        printf("%I64d",rez);
    }
    else if (nr==3)
    {
        sum_cif=0;
        for (i=1; i<=n; i++)
            sum_cif+=v[i];
        if (sum_cif%3==0)
        {
            rez=fact(n);
            printf("%I64d",rez);
        }
        else printf("0");
    }
    else if (nr==6)
    {
        sum_cif=0;
        for (i=1; i<=n; i++)
            sum_cif+=v[i];
        cont=0;
        for (i=1; i<=n; i++)
            if (v[i]%2==0) cont++;
        if (sum_cif%3==0)
        {
            rez=fact(n-1)*cont;
            printf("%I64d",rez);
        }
        else printf("0");
    }
    else if (nr==9)
    {
        sum_cif=0;
        for (i=1; i<=n; i++)
            sum_cif+=v[i];
        if (sum_cif%9==0)
        {
            rez=fact(n);
            printf("%I64d",rez);
        }
        else printf("0");
    }
    else if (nr==5)
    {
        cont=0;
        for (i=1; i<=n; i++)
            if (v[i]%5==0) cont++;
        rez=fact(n-1)*cont;
        printf("%I64d",rez);
    }
    else if (nr==15)
    {
        sum_cif=0;
        for (i=1; i<=n; i++)
            sum_cif+=v[i];
        if (sum_cif%3==0)
        {
            cont=0;
            for (i=1; i<=n; i++)
                if (v[i]%5==0) cont++;
            rez=fact(n-1)*cont;
            printf("%I64d",rez);
        }
        else printf("0");
    }
    return 0;
}