Cod sursa(job #1319846)

Utilizator hrazvanHarsan Razvan hrazvan Data 17 ianuarie 2015 14:01:12
Problema Pascal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#define MAXR 5000000
int p[MAXR + 1], q[MAXR + 1];

int main(){
  FILE *in = fopen("pascal.in", "r");
  int r, d;
  fscanf(in, "%d%d", &r, &d);
  fclose(in);
  int i, j, rez, k, l, cd;
  if(d != 6){
    cd = d;
    if(d == 4)
      d = 2;
    for(i = d; i <= r; i *= d){
      for(j = i; j <= r; j += i){
        p[j]++;
      }
    }
    rez = 0;
    k = 0;
    for(i = 1; i <= r; i++){
      k += p[r - i + 1] - p[i];
      if(cd != 4){
        if(k > 0)
          rez++;
      }
      else
        if(k > 1)
          rez++;
    }
  }
  else{
     for(i = 2; i <= r; i <<= 1){
      for(j = i; j <= r; j += i){
        p[j]++;
      }
    }
     for(i = 3; i <= r; i *= 3){
      for(j = i; j <= r; j += i){
        q[j]++;
      }
    }
    rez = 0;
    k = 0;
    l = 0;
    for(i = 1; i <= r; i++){
      k += p[r - i + 1] - p[i];
      l += q[r - i + 1] - q[i];
      if(k > 0 && l > 0)
        rez++;
    }
  }
  FILE *out = fopen("pascal.out", "w");
  fprintf(out, "%d", rez);
  fclose(out);
  return 0;
}