Cod sursa(job #2689615)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 21 decembrie 2020 16:33:13
Problema GFact Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <algorithm>
#include <fstream>
using namespace std;
ifstream cin( "gfact.in" );
ofstream cout( "gfact.out" );
pair<int, int> v[ 99999 ];
int poz;

void descompun( int n ){
    int d = 2, p = 0;
    while( n > 1 ){
        p = 0;
        while( n % d == 0 ){
            n /= d;
            ++p;
        }
        if( p != 0 )
            v[ poz ].first = d, v[ poz++ ].second = p;
        ++d;
        if( n > 1 && d * d > n )
            d = n;
    }
}

int main()
{
    int n, k, x, rez = 0, p;
    cin >> n >> p;
    descompun( n );
    if( n == 0 ){

    } else {
        int i, ok = 1, j;
        for( i = 0; i < poz; i++ ){
            v[ i ].second *= p;
            //cout << v[ i ].first << ' ' << v[ i ].second << '\n';
        }
        i = 1;
        while( ok ){
            ++i;
            n = i;
            int j = 0;
            int d = 2, p = 0;
            while( n > 1 ){
                p = 0;
                while( n % d == 0 ){
                    n /= d;
                    ++p;
                }
                if( p != 0 ){
                    while( j < poz && v[ j ].first < d )
                        ++j;
                    if( v[ j ].first == d )
                        v[ j ].second -= p;
                }
                ++d;
                if( n > 1 && d * d > n )
                    d = n;
                if( j > poz - 2 && v[ poz - 1 ].second <= 0 )
                    ok = 0;
            }
        }
        cout << i;
    }
    return 0;
}