Cod sursa(job #2167183)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 13 martie 2018 20:33:12
Problema Zero 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

ifstream in("zero2.in");
ofstream out("zero2.out");

long long frecventa_numar(int n,int b){
    long long aux = 1;
    long long nr = 0;
    while(aux*b <= n){
        aux *= b;
        nr += 1LL*(n/aux - 1)*(n/aux)/2*aux;
        nr += 1LL*(n%aux+1)*(n/aux);
    }
    return nr;
}

long long rez(int n,int b){
    int d = 2,exp = 0;
    long long minim = LLONG_MAX;

    while(d*d <= b){
        exp = 0;
        while(b % d == 0){
            b /= d;
            exp++;
        }
        if(exp)
            minim = min(minim,frecventa_numar(n,d)/exp);
        d++;
    }
    if(b > 1)
        minim = min(minim,frecventa_numar(n,b));

    return minim;
}


int main()
{
    int n,b;
    for(int i = 1; i <= 10; i++){
        in>>n>>b;
        out<<rez(n,b)<<"\n";
    }
    return 0;
}