Cod sursa(job #2275582)

Utilizator danhorea2010Horica danhorea2010 Data 3 noiembrie 2018 12:17:00
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <string.h>
#include <math.h>

using namespace std;

ifstream in("pascal.in");
ofstream out("pascal.out");

const long MMAX = 5000001;

int v2[MMAX], v3[MMAX], v5[MMAX];

int main()
{
  long long ct = 0,n , d,sol2=0,sol3=0,sol5=0;

  in>> n >> d;

  for(long i = 1; i<=n ;++i)
  {
      if(i%2 == 0) v2[i] = v2[i/2] + 1;
      if(i%3 == 0) v3[i] = v3[i/3] + 1;
      if(i%5 == 0) v5[i] = v5[i/5] + 1;
  }


  for(long i = 1; i < n ;++i)
  {
    sol2 += v2[n-i+1] - v2[i];
    sol3 += v3[n-i+1] - v3[i];
    sol5 += v5[n-i+1] - v5[i];

    if ( d == 2 && sol2>0)
      ++ct;
    else if( d == 3 && sol3>0)
        ++ct;
    else if( d== 4 && sol2 > 1)
        ++ct;
    else if(d==5 && sol5>0)
        ++ct;
    else if(d == 6 && sol2 > 0 && sol3 >0 )
            ++ct;
  }
   out<<ct<<'\n'; 
}