Cod sursa(job #1168459)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 8 aprilie 2014 17:30:05
Problema Mins Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

int fact[7] = { 2, 3, 5, 7, 11, 13, 17 }, div[10], st[10];
int c, d, m, M, nrd, nr, nc;

void comb( int niv, int cate, int val ) {
    if( niv == cate + 1 )
        nc += M / val;
    else {
        for( int i = st[niv-1] + 1 ; i <= nrd - cate + niv ; ++i )
            if( val * div[i] <= M )
                comb( niv + 1, cate, val * div[i] );
    }
}

int main () {
    FILE *f, *g;
    f = fopen( "mins.in", "r" );
    g = fopen( "mins.out", "w" );

    int x;

    fscanf( f, "%d%d", &c, &d );

    --c;
    --d;

    m = c < d ? c : d;
    M = c > d ? c : d;

    for( int i = 1 ; i <= m ; ++i ) {
        nrd = 0;
        for( int j = 0 ; j < 7 ; ++j )
            if( i % fact[j] == 0 )
                div[++nrd] = fact[j];

        nc = 0;
        for( int j = 1 ; j <= nrd ; ++j ) {
            x = 0;
            comb( 1, 1, 1 );
            nc += x;
        }
        nr += M - nc;
    }

    fprintf( g, "%d\n", nr );

    fclose( f );
    fclose( g );
    return 0;
}