Cod sursa(job #2032623)

Utilizator andreiutu111Noroc Andrei Mihail andreiutu111 Data 5 octombrie 2017 15:00:36
Problema Mins Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("mins.in");
ofstream g("mins.out");
int C,D,nr[1001],nr1;
long long rez;
bool viz[1000001],x[1001],y[1001];
void ciur(int u){
    for(int i=2;i<=u;++i)
        if(!viz[i]){
            nr[++nr1]=i;
            for(int j=i;j<=u;j+=i);
                viz[i]=1;
        }
}
bool cmmdc1(int a,int b){
    int i=1;
    while(a>1 && i<=nr1){
        if(!(a%nr[i])){
            x[i]=1;
            while(!(a%nr[i]))a/=nr[i];
        }
        ++i;
    }
    i=1;
    while(b>1 && i<=nr1){
        if(!(b%nr[i])){
            y[i]=1;
            while(!(b%nr[i]))b/=nr[i];
        }
        ++i;
    }
    for(int i=1;i<=nr1;++i)
        if(x[i] && y[i])
            return false;
    return true;
}
int main()
{
    f>>C>>D;
    if(C>D)
        swap(C,D);
    ciur(D);
    rez=C-1;
    for(int i=2;i<=C;++i)
        for(int j=2;j<i;++j){
            if(cmmdc1(i,j))
                ++rez;
            memset(x,0,sizeof(nr1));
            memset(y,0,sizeof(nr1));
        }
    rez+=D-C;
    for(int i=C+1;i<=D;++i)
        for(int j=2;j<i;++j){
            if(cmmdc1(i,j))
                ++rez;
            memset(x,0,sizeof(nr1));
            memset(y,0,sizeof(nr1));
        }
    g<<rez;
    return 0;
}