Cod sursa(job #1671449)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 1 aprilie 2016 18:41:19
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
long n,i;
long d,j,nr2,nr3,nr4,nr22,nr5,nrr,nr33,nr55;
int main()
{
  f>>n>>d;
  vector <int>exp2(n+3,0);
    vector <int>exp3(n+3,0);
      vector <int>exp5(n+3,0);
   for(i=1;i<=n;i++)
   {
       if(i%2==0){exp2[i]=1+exp2[i/2];}
       if(i%3==0){exp3[i]=1+exp3[i/3];}
       if(i%5==0){exp5[i]=1+exp5[i/5];}
   }


   for(j=1;j<=n+1;j++)
   {
      nr2=0;nr3=0;nr4=0;
      nr22=exp2[d];
      nr33=exp3[d];
      nr55=exp5[d];
      for(i=1;i<=n;i++){nr2=nr2+exp2[i];nr3=nr3+exp3[i];nr5=nr5+exp5[i];}
      if(j<=n-j)
      {for(i=1;i<=j;i++){nr2=nr2-2*exp2[i];nr3=nr3-2*exp3[i];nr5=nr5-2*exp5[i];}
      for(i=j+1;i<=(n-j);i++){nr2=nr2-exp2[i];nr3=nr3-exp3[i];nr5=nr5-exp5[i];}

      }
      else
      {
               for(i=1;i<=(n-j);i++){nr2=nr2-2*exp2[i];nr3=nr3-2*exp3[i];nr5=nr5-2*exp5[i];}
               for(i=(n-j)+1;i<=j;i++){nr2=nr2-exp2[i];nr3=nr3-exp3[i];nr5=nr5-exp5[i];}

      }
     if(d==2&&nr2>0)nrr++;
     else if(d==3&&nr3>0)nrr++;
     else if(d==4&&nr2>=2)nrr++;
     else if(d==5&&nr5>0)nrr++;
     else if(d==6&&nr2>0&&nr3>0)nrr++;
   }
   g<<nrr;
    return 0;
}