Cod sursa(job #3250921)

Utilizator cristian46290Petre Cristian cristian46290 Data 24 octombrie 2024 09:58:50
Problema Pascal Scor 40
Compilator cpp-64 Status done
Runda cex_1 Marime 1.33 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("pascal.in");
ofstream g("pascal.out");

int r, d;

static inline int exp(int x,int y)
{
    int rez = 0;
    if (x == 0)return 0;
    int cy = y;
    while(x >= cy){
        rez += x / cy;
        cy *= y;
    }
    return rez;
}

int main()
{
    f >> r >> d;
    int rez = 0;
    int nr;
    if (r % 2 == 1)nr = (r + 1) / 2;
    else nr = r / 2 + 1;
    if (r == 0){
        g << 0;
        return 0;
    }
    int ceva1 = 0;
    if (d == 6)ceva1 = exp(r,3);
    else if (d == 4)ceva1 = exp(r,2) / 2;
    else ceva1 = exp(r,d);
    for (int i = 0;i < nr;i++){
        if (d != 6 && d != 4){
            if (ceva1 - exp((r-i),d) - exp(i,d) > 0)rez++;
        }
        else if (d == 6){
            int ceva2 = exp(r-i,3);
            int ceva3 = exp(i,3);
            int exp6 = ceva2 + ceva3;
            if (ceva1 - exp6 > 0)rez++;
        }
        else if (d == 4){
            int ceva2 = exp(r-i,2);
            int ceva3 = exp(i,2);
            int exp4 = (ceva2 + ceva3) / 2;
            if (ceva1 - exp4 > 0)rez++;
        }
        //cout << exp(r,d) << " " << exp((r-i),d) << " " << exp(i,d) << '\n';
    }
    if (r % 2 == 1)g << rez * 2;
    else{
        if (rez > 0)g << rez * 2 - 1;
        else g << 0;
    }
}