Cod sursa(job #465706)

Utilizator lam99Tran Bach Lam lam99 Data 25 iunie 2010 12:20:32
Problema Ratphu Scor 0
Compilator c Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 Marime 3.54 kb
#include<stdio.h>
char c;
long n,i,num,x,k,f[19];
int main()
{
    freopen("ratphu.in","r",stdin);
    freopen("ratphu.out","w",stdout);
    n=1;
    while(x==0)
       {
           ++num;
           scanf("%c",&c);
           if(c=='\n')
                 x=1;
           else
               f[num]=c;
       }
    scanf("%ld",&k);
    if(k==1)
         {
            for(i=1;i<=num;++i)
              n=n*i;
            printf("%ld\n",n);
            return 0;
         }
    if(k==2)
         {
            for(i=1;i<=num;++i)
              if(f[i]%2==0)
                 ++x;
            for(i=1;i<num;++i)
               n=n*i;
            printf("%ld\n",n*x);
            return 0;
         }
    if(k==3)
         {
            for(i=1;i<=num;++i)
              x+=f[i];
            if(x%3==0)
                {
                  for(i=1;i<=n;++i)
                  n=n*i;
                  printf("%ld\n",n);
                }
            else
                printf("0\n");
            return 0;
         }
     if(k==9)
         {
            for(i=1;i<=num;++i)
              x+=f[i];
            if(x%9==0)
                {
                  for(i=1;i<=n;++i)
                  n=n*i;
                  printf("%ld\n",n);
                }
            else
                printf("0\n");
            return 0;
         }
     if(k==5)
         {
             for(i=1;i<=num;++i)
                if(f[i]%5==0)
                     ++x;
             for(i=1;i<num;++i)
                 n=n*i;
             printf("%ld\n",x*n);
             return 0;
         }
     if(k==10)
         {
             for(i=1;i<=num;++i)
                if(f[i]%10==0)
                     ++x;
             for(i=1;i<num;++i)
                  n=n*i;
             printf("%ld\n",x*n);
             return 0;

         }
     if(k==20)
         {
             for(i=1;i<=num;++i)
                   if(f[i]==0)
                     ++y;
                   else
                      if(f[i]%2==0)
                         ++x;
             for(i=1;i<num-1;++i)
                  n=n*i;
             printf("%ld\n",n*x*y);
             return 0;

         }
    if(k==15)
         {
             for(i=1;i<=num;++i)
                 x+=f[i];
             if(x%3!=0)
               {
                   printf("0\n");
                   return 0;
               }
             x=0;
             for(i=1;i<=num;++i)
                if(f[i]%5==0)
                     ++x;
             for(i=1;i<num;++i)
                 n=n*i;
             printf("%ld\n",n*x)
             return 0;
         }
     if(k==6)
         {
             for(i=1;i<=num;++i)
                 x+=f[i];
             if(x%3!=0)
               {
                   printf("0\n");
                   break;
               }
             x=0;
             for(i=1;i<=num;++i)
              if(f[i]%2==0)
                 ++x;
            for(i=1;i<num;++i)
               n=n*i;
            printf("%ld\n",n*x);
            return 0;
         }
    if(k==18)
         {
            for(i=1;i<=num;++i)
              x+=f[i];
            if(x%9!=0)
                {
                    printf("0\n");
                    return 0;
                }
            for(i=1;i<=num;++i)
              if(f[i]%2==0)
                 ++x;
            for(i=1;i<num;++i)
               n=n*i;
            printf("%ld\n",n*x);
            return 0;
         }
    fclose(stdin);
    fclose(stdout);
    return 0;

}