Pagini recente » Cod sursa (job #2465203) | Cod sursa (job #1161191) | Cod sursa (job #79599) | Cod sursa (job #1715333) | Cod sursa (job #1560904)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
int main()
{
long long int n;
int d;
fin >> n >> d;
vector <long long int> exp2(n+10,0);
vector <long long int> exp3(n+10,0);
vector <long long int> exp5(n+10,0);
vector <long long int> fact2(n+10,0);
vector <long long int> fact3(n+10,0);
vector <long long int> fact5(n+10,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];
}
for ( int i = 1; i <= n ;i++)
{
fact2[i] = fact2[i-1] + exp2[i];
fact3[i] = fact3[i-1] + exp3[i];
fact5[i] = fact5[i-1] + exp5[i];
}
if(d == 2)
{
long long int rezultat = 0;
for( int i = 1; i < n ; i++)
if(fact2[n] - fact2[i] - fact2[n-i])
rezultat ++;
fout << rezultat;
fout.close();
return 0;
}
if(d == 3)
{
long long int rezultat = 0;
for ( int i = 1; i<n ;i++)
if( fact3[n] -fact3[i] -fact3[n-i])
rezultat ++;
fout << rezultat ;
fout.close();
return 0;
}
if(d == 4)
{
long long int rezultat = 0;
for ( int i =1 ; i < n; i++)
if( (fact2[n] - fact2[i] - fact2[n-i]) >= 2)
rezultat ++;
fout << rezultat ;
fout.close();
return 0;
}
if( d == 5)
{
long long int rezultat = 0;
for ( int i = 1 ; i < n ;i++)
if( fact5[n] - fact5[i] -fact5[n-i])
rezultat ++;
fout << rezultat ;
fout.close();
return 0;
}
if(d == 6)
{
long long int rezultat = 0;
for( int i = 1 ; i < n ;i++)
if((fact2[n] - fact2[i] -fact2[n-i]) && (fact3[n] -fact3[i] -fact3[n-i]) )
rezultat ++;
fout << rezultat;
fout.close();
return 0;
}
}