Cod sursa(job #1948617)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 1 aprilie 2017 11:49:07
Problema Mins Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;


const int N = 1e6 + 5 ;
int v[ N ] ;

long long sol ;

int main(){
    int n , m , i , j ;

    freopen("mins.in","r",stdin);
    freopen("mins.out","w",stdout);

    scanf("%d%d",&n,&m);

    int k = min ( --n , --m );

    sol = 1LL * n * m ;

    for ( i = 2 ; i <= k ; i++ ){

        if ( v [ i ] == -1 ){
            continue ;
        }else if ( v [ i ] == 0 ){

            for ( j =  i ;  j <= k ; j += i ){
                v[ j ]++;
            }

            if ( ( long long ) i * i <= k ){
                for ( j = i * i ; j <= k ; j += i*i ){
                    v[ j ] = -1;
                }
            }

        }

        if ( v [ i ] % 2 == 1  ){
            v [ i ] = -1 ;
        }else{
            v [ i ] = 1 ;
        }

        sol += 1LL * ( n / i ) * ( m / i ) * v [ i ] ;

    }

    printf("%lld",sol);

    return 0;
}