Cod sursa(job #3154703)

Utilizator catalinmarincatalinmarin catalinmarin Data 5 octombrie 2023 17:50:06
Problema Pascal Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int v1[5000005] = {0};
int v2[5000005] = {0};
int v1f[5000005] = {0};
int v2f[5000005] = {0};
int main(){
    int contor = 0;
    int rand, d;
    fin >> rand >> d;
    for (int i = 1; i <= rand; i++){
        if (i % d == 0) {
            if (d == 6) {
                v1[i] = v1[i / 2] + 1;
                v2[i] = v2[i / 3] + 1;
            } else {
                v1[i] = v1[i / d] + 1;
            }
        }
        v1f[i] = v1f[i - 1] + v1[i];
        v2f[i] = v2f[i - 1] + v2[i];
    }
    for (int i = 0; i <= rand; i++){
        if (d != 4 && d != 6) {
            if (v1f[rand] >= v1f[i] + v1f[rand - i] + 1)
                contor++;
        } else if (d == 4){
            if (v1f[rand] >= v1f[i] + v1f[rand - i] + 2)
                contor++;
        } else if (d == 6){
            if ((v2f[rand] >= v2f[i] + v2f[rand - i] + 1) && v1f[rand] >= v1f[i] + v1f[rand - i] + 1)
                contor++;
        }
    }
    fout << contor;
    return 0;
}