Cod sursa(job #1466143)

Utilizator om6gaLungu Adrian om6ga Data 28 iulie 2015 18:10:03
Problema Pascal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
 
int r, d, total[6];
int count, delta, i, j, aux, mult;
 
int main()
{
    FILE *in, *out;
    in = fopen("pascal.in", "r");
    out = fopen("pascal.out", "w");
    fscanf(in, "%d %d", &r, &d);

    for (i = 1; i <= r/2; i++)
    {
        if (d == 2 || d == 4 || d == 6)
        {
            for (j = r-i+1; j && (j%2 == 0); j >>= 1, total[2]++);
            for (j = i; j && (j%2 == 0); j >>= 1, total[2]--);
        }
        if (d == 3 || d == 6)
        {
            for (j = r-i+1; j && (j%3 == 0); j /= 3, total[3]++);
            for (j = i; j && (j%3 == 0); j /= 3, total[3]--);
        }
        if (d == 5)
        {
            for (j = r-i+1; j && (j%5 == 0); j /= 5, total[5]++);
            for (j = i; j && (j%5 == 0); j /= 5, total[5]--);
        }
        
        if (d == 2 || d == 3 || d == 5)
            delta = (total[d] ? 1 : 0);
        else if (d == 4)
            delta = (total[2] >= 2 ? 1 : 0);
        else if (d == 6)
            delta = (total[2] && total[3] ? 1 : 0);
        count += (delta << 1);
    }

    if (r > 2 && r%2 == 0)
        count -= delta;
 
    fprintf(out, "%d\n", count);
    fclose(in);
    fclose(out);
    return 0;  
}