Cod sursa(job #1753640)

Utilizator andreistanStan Andrei andreistan Data 6 septembrie 2016 20:19:17
Problema Mins Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int MAXN = 1000001;
int ciurn[MAXN],ciurp[MAXN];
ifstream f("mins.in");
ofstream g("mins.out");
int main(){
    int c,d,n;
    long long sol,patrat,card=0;
    f>>c>>d;
    c--;
    d--;
    n=min(c,d);
    for(int i=2;i<=n;i++){
        if(ciurn[i]==0){
            if(1LL*i*i<=n)
                patrat=1LL*i*i;
            else
                patrat=n+1;
            for(int j=i;j<=n;j+=i){
                ciurn[j]++;
                if(j%patrat==0)
                    ciurp[j]=1;
            }
        }
        if(ciurp[i]==1)
            continue;
        if(ciurn[i]&1)
            card+=1LL*(c/i)*(d/i);
        else
            card-=1LL*(c/i)*(d/i);
    }
    g<<1LL*c*d-card;
    return 0;
}