Pagini recente » Istoria paginii runda/simulare_oji2015/clasament | Cod sursa (job #1594847) | Clasament laborator1 | Istoria paginii runda/elisaphotography | Cod sursa (job #1309224)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
const int Dim = 5000001;
int r, d, s2, s3, s5, nr;
short x2[Dim], x3[Dim], x5[Dim];
short p2[Dim], p3[Dim], p5[Dim];
int main()
{
fin >> r >> d;
if ( r == 0)
{
fout << 0;
return 0;
}
for ( int i = 2, j; i <= r; ++i)
{
x2[i] = x2[i-1];
x3[i] = x3[i-1];
x5[i] = x5[i-1];
if ( i % 2 == 0)
p2[i] = p2[i/2] + 1,x2[i] += p2[i];;
if ( i % 3 == 0)
p3[i] = p3[i/3] + 1,x3[i] += p3[i];;
if ( i % 5 == 0)
p5[i] = p5[i/5] + 1,x5[i] += p5[i];
}
for ( int i = 0; i <= r; ++i)
{
s2 = x2[r] - x2[r-i] - x2[i];
s3 = x3[r] - x3[r-i] - x3[i];
s5 = x5[r] - x5[r-i] - x5[i];
if ( d == 2 && s2 >= 1 )
nr++;
if( d == 3 && s3 >= 1)
nr++;
if( d == 5 && s5 >= 1)
nr++;
if( d == 4 && s2 >= 2)
nr++;
if( d == 6 && s2 >= 1 && s3 >= 1)
nr++;
}
fout << nr;
return 0;
}