Pagini recente » Cod sursa (job #169276) | Cod sursa (job #1965761) | Cod sursa (job #2237903) | Cod sursa (job #377793) | Cod sursa (job #548669)
Cod sursa(job #548669)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int MAX = 1 << 19;
unsigned char V[MAX];
int main() {
int limit;
ifstream f("ciur.in");
ofstream g("ciur.out");
f>>limit;
int i,j,x,k = sqrt ( limit );
for (i=1; i<=k; i++)
for (j=1; j<=k; j++) {
x = 4*i*i+j*j;
if (x<limit) if ((x % 12==1) || (x % 12==5)) V[x >> 3] ^= 1 << ( x & 7 ) ;
x = 3*i*i+j*j;
if (x<limit) if (x % 12==7) V[x >> 3] ^= 1 << ( x & 7 ) ;
x = 3*i*i-j*j;
if (i>j) if (x<limit) if (x % 12==11) V[x >> 3] ^= 1 << ( x & 7 ) ;
}
for (i=5; i<=k; i++) {
x = i*i;
j = 1;
while (j*x<limit) {
V[j*x >> 3] &= 255 - ( 1 << ( j*x & 7 ) );
j++;
}
}
V[2 >> 3] |= 1 << ( 2 & 7 ) ;
V[3 >> 3] |= 1 << ( 3 & 7 ) ;
x = 0;
for (i=2; i<limit; i++) if ( V[i >> 3] & ( 1 << ( i & 7 ) ) ) x++;
g<<x;
}