Cod sursa(job #1583621)

Utilizator sucureiSucureiRobert sucurei Data 29 ianuarie 2016 09:40:40
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.69 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int  c2 , c3 , c5;

int main()
{
        long long int n;
        int d;
        fin >> n >> d;

        vector <int> exp2(n+3,0);
        vector <int> exp3(n+3,0);
        vector <int> exp5(n+3,0);

        for ( int 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];
        }

        if(d == 2)
        {
                long long int rezultat = 0;

                for( int i = 1; i < n ; i++)
                {
                        c2 += exp2[n - i + 1] - exp2[i];

                        if(c2)
                                rezultat ++;
                }
                fout << rezultat;
                fout.close();
                return 0;
        }

        if(d == 3)
        {
                long long int rezultat = 0;

                for ( int i = 1; i<n ;i++)
                {
                        c3 += exp3[n-i+1] - exp3[i];
                        if(c3)
                                rezultat ++;
                }
                fout << rezultat ;
                fout.close();
                return 0;
        }

        if(d == 4)
        {
                long long int rezultat = 0;

                for ( int i =1 ; i < n; i++)
                {
                        c2 += exp2[n-i + 1] - exp2[i];
                        if(c2 >= 2)
                                rezultat ++;
                }

                fout << rezultat ;
                fout.close();
                return 0;
        }

        if( d == 5)
        {
                long long int rezultat = 0;

                for ( int i = 1 ; i < n ;i++)
                {
                        c5 += exp5[n-i+1] - exp5[i];
                        if(c5)
                            rezultat ++;
                }

                fout << rezultat ;
                fout.close();
                return 0;
        }

        if(d == 6)
        {
                long long int rezultat = 0;

                for( int i = 1 ; i < n ;i++)
                {
                        c2 += exp2[n-i+1] - exp2[i];
                        c3 += exp3[n-i+1] - exp3[i];
                        if(c2 && c3)
                                rezultat ++;
                }

                fout << rezultat;
                fout.close();
                return 0;
        }
}