Cod sursa(job #1560928)

Utilizator Debuger3Numarul 1 Debuger3 Data 3 ianuarie 2016 14:59:39
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 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;
		}
}