Pagini recente » Cod sursa (job #2037880) | Cod sursa (job #2914503) | Monitorul de evaluare | Cod sursa (job #2628566) | Cod sursa (job #2097503)
#include <fstream>
#define DIM 5000002
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int n, d, DOI, TREI, PATRU, CINCI, SASE, doi[DIM], trei[DIM], cinci[DIM];
bool viz[DIM];
int main()
{
f>>n>>d;
doi[2] = 1;
trei[3] = 1;
cinci[5] = 1;
for(int i = 2; 1LL * i * i <= n; ++ i){
int nr = i;
if(!viz[i]){
for(int j = i; j * i <= n; ++ j){
doi[i * j] = doi[i] + doi[j];
viz[i * j] = 1;
}
viz[i] = 1;
}
viz[i] = 0;
}
for(int i = 2; 1LL * i * i <= n; ++ i){
int nr = i;
if(!viz[i]){
for(int j = i; 1LL * j * i <= n; ++ j){
trei[i * j] = trei[i] + trei[j];
viz[i * j] = 1;
}
viz[i] = 1;
}
viz[i] = 0;
}
for(int i = 2; 1LL * i * i <= n; ++ i){
int nr = i;
if(!viz[i]){
for(int j = i; 1LL * j * i <= n; ++ j){
cinci[i * j] = cinci[i] + cinci[j];
viz[i * j] = 1;
}
viz[i] = 1;
}
viz[i] = 0;
}
DOI = 0;
TREI = 0;
CINCI = 0;
int s = 0;
for(int i = 0; i <= n; ++ i){
switch (d){
case 2: if(DOI > 0) ++ s; break;
case 3: if(TREI > 0) ++ s; break;
case 4: if(DOI > 1) ++ s; break;
case 5: if(CINCI > 0) ++ s; break;
case 6: if(DOI > 0 && TREI > 0) ++ s; break;
}
DOI -= doi[i + 1];
TREI -= trei[i + 1];
CINCI -= cinci[i + 1];
DOI += doi[n - i];
TREI += trei[n - i];
CINCI += cinci[n - i];
}
g<<s;
return 0;
}