Cod sursa(job #324347)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 15 iunie 2009 20:35:53
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.71 kb
#include<stdio.h>

int a[5000001],i,r,d;
long long k;

int cat( int x)
{   
    if(x%d==0) return x/d;
    return 0;
}    

int main()
{ 
  freopen("pascal.in","r",stdin);
  freopen("pascal.out","w",stdout);
  
  scanf("%d %d",&r,&d);
  if(r==0) { printf("0\n");
             fclose(stdin);
             fclose(stdout);
             return 0;
           }  
  if(r==1&&d==2) { printf("1\n");
                   fclose(stdin);
                   fclose(stdout);
                   return 0;
                  }
  else if(r==1&&d>2) { printf("0\n");
                       fclose(stdin);
                       fclose(stdout);
                       return 0;
                     }                          
 if(d==2||d==3||d==5) 
 { for(i=2;i<=r;i++){  a[i]=cat(i);
                       a[i]=a[i-1]+a[i];
                      
                   }
                   
   for(i=r/2;i>=1;--i)   if((a[r]-(a[r-i]+a[i]))>0) { 
                                                      if(r%2==0&&i==r/2) k+=1;
                                                      else k+=2;
                                                     }                          
 printf("%lld\n",k);
    fclose(stdin);
    fclose(stdout);
    return 0;
  }
  
  
 if(d==4) 
 { d=d/2;
   for(i=2;i<=r;i++){  a[i]=cat(i);
                       a[i]=a[i-1]+a[i];
                   }
                   
   for(i=r/2;i>=1;--i)   if((a[r]-(a[r-i]+a[i]))>1) {  if(r%2==0&&i==r/2) k+=1;
                                                      else k+=2; 
                                                    }                         
  printf("%lld\n",k);
    fclose(stdin);
    fclose(stdout);
    return 0;
  }
}