Cod sursa(job #2178227)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 19 martie 2018 11:47:36
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#define MAX 5000010

using namespace std;

int r,d,da,ia,ans,sz;
int nrd[MAX][3],dv[3];

int main()
{
    ifstream f ("pascal.in");
    ofstream g ("pascal.out");
    f>>r>>d;
    if(d==2||d==3||d==5)sz=1,dv[1]=d;
    else if(d==4)sz=1,dv[1]=2;
    else sz=2,dv[1]=2,dv[2]=3;
    for(int i=1;i<=r;i++){
      ia=i;
      for(int ddn=1;ddn<=sz;ddn++){
        da=0;
        while(ia%dv[ddn]==0)da++,ia/=dv[ddn];
        nrd[i][ddn]=nrd[i-1][ddn]+da;
      }
    }
    for(int j=0;j<=r;j++){
      if(sz==1){
        ia=nrd[r][1]-nrd[j][1]-nrd[r-j][1];
      } else {
        ia=min(nrd[r][1]-nrd[j][1]-nrd[r-j][1],
               nrd[r][2]-nrd[j][2]-nrd[r-j][2]);
      }
      //cout<<ia<<'\n';
      if(ia>=1)ans++;
    }
    g<<ans<<'\n';
    f.close ();
    g.close ();
    return 0;
}