Cod sursa(job #2108371)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 18 ianuarie 2018 09:48:53
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");

int r, d, nr = 0, ant = 0;

int expp(int n, int p)
{
    int e = 0;
    while(n % p == 0)
    {
        e ++;
        n /= p;
    }
    return e;
}
int divid(int k)
{
    if(d == 6)
    {
        int minm = min(expp(r - k + 1, 3) - expp(k, 3), expp(r - k + 1, 2) - expp(k, 2));
        return ant + minm;
    }
    if(d == 4) return ant + expp(r - k + 1, 2) - expp(k, 2);
    return ant + expp(r - k + 1, d) - expp(k, d);
}
int main()
{
    f >> r >> d;
    int r2 = (r - 1) / 2, di;
    for(int k = 1; k <= r2; k++)
    {
        di = divid(k);
        if(d == 4) nr += di > 1 ? 2 : 0;
        else nr += di > 0 ? 2 : 0;
        ant = di;
    }
    if(r != 0 && r % 2 == 0)
    {
        di = divid(r / 2);
        if(d == 4) nr += di > 1 ? 1 : 0;
        else nr += di > 0 ? 1 : 0;
    }
    g << nr;
    return 0;
}