Cod sursa(job #1455198)

Utilizator isa_fares_mudiFares Mohamad isa_fares_mudi Data 27 iunie 2015 14:07:20
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <cstdio>

using namespace std;
int p2[5000005], p3[5000005], p5[5000005] ; /// de la 2 la 6, doar 2, 3 si 5 sunt prime
int main()
{
    freopen ( "pascal.in","r",stdin ) ;
    freopen ( "pascal.out","w",stdout ) ;
    int r, d, i, ras = 0, r2 = 0, r3 = 0, r5 = 0 ;
    scanf ( "%d%d",&r,&d ) ;
    for ( i = 1 ; i <= r ; i ++ )
    {
        /// il descompunem pe r
        if ( i % 2 == 0 )
            p2[i] = 1 + p2[i/2] ;
        if ( i % 3 == 0 )
            p3[i] = 1 + p3[i/3] ;
        if ( i % 5 == 0 )
            p5[i] = 1 + p5[i/5] ;
    }
    for ( i = 1 ; i <= r - 1 ; i ++ )
    {
        r2 += p2[r-i+1] - p2[i] ;
        r3 += p3[r-i+1] - p3[i] ;
        r5 += p5[r-i+1] - p5[i] ;
        switch ( d )
        {
            case 2 :
            {
                if ( r2 > 0 )
                    ras++;
                break;
            }
            case 3 :
            {
                if ( r3 > 0 )
                    ras++;
                break;
            }
            case 4 :
            {
                if ( r2 > 1 )
                    ras++;
                break;
            }
            case 5 :
            {
                if ( r5 > 0 )
                    ras++;
                break;
            }
            case 6 :
            {
                if ( r2 > 0 && r3 > 0 )
                    ras++;
                break;
            }
        }
    }
    printf ( "%d",ras ) ;
    return 0;
}