Cod sursa(job #3360926)

Utilizator Mark.DoarnaMark Doarna Mark.Doarna Data 17 iulie 2026 16:09:18
Problema Sum Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.9 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sum.in");
ofstream out("sum.out");
bool ciur[400];
int prime[100];
int v[6];
int main()
{
    int n, i, j, j1, j2, j3, j4, j5, x, d=0, copx, nr=0;
    long long s;
    for(i=2;i<400;i++){
        if(ciur[i]==false){
            prime[d++]=i;
            for(j=i;j<400;j+=i){
                ciur[j]=true;
            }
        }
    }
    in>>n;
    for(i=0;i<n;i++){
        in>>x;
        copx=x;
        j=0;
        d=0;
        while(prime[j]*prime[j]<=copx){
            if(copx%prime[j]==0){
                v[d++]=prime[j];
                while(copx%prime[j]==0){
                    copx/=prime[j];
                }
            }
            j++;
        }
        if(copx!=1){v[d++]=copx;}
        s=((x-1)*x)/2;
        nr=x;
        for(j=0;j<d;j++){
            s-=v[j]*((x/v[j]-1)*(x/v[j]))/2;
            nr-=x/v[j];
        }
        for(j=0;j<d;j++){
            for(j1=j+1;j1<d;j1++){
                s+=v[j]*v[j1]*((x/v[j]/v[j1]-1)*(x/v[j]/v[j1]))/2;
                nr+=x/v[j]/v[j1];
            }
        }
        for(j=0;j<d;j++){
            for(j1=j+1;j1<d;j1++){
                for(j2=j1+1;j2<d;j2++){
                    s-=v[j]*v[j1]*v[j2]*((x/v[j]/v[j1]/v[j2]-1)*(x/v[j]/v[j1]/v[j2]))/2;
                    nr-=x/v[j]/v[j1]/v[j2];
                }
            }
        }
        for(j=0;j<d;j++){
            for(j1=j+1;j1<d;j1++){
                for(j2=j1+1;j2<d;j2++){
                    for(j3=j2+1;j3<d;j3++){
                        s+=v[j]*v[j1]*v[j2]*v[j3]*((x/v[j]/v[j1]/v[j2]/v[j3]-1)*(x/v[j]/v[j1]/v[j2]/v[j3]))/2;
                        nr+=x/v[j]/v[j1]/v[j2]/v[j3];
                    }
                }
            }
        }
        for(j=0;j<d;j++){
            for(j1=j+1;j1<d;j1++){
                for(j2=j1+1;j2<d;j2++){
                    for(j3=j2+1;j3<d;j3++){
                        for(j4=j3+1;j4<d;j4++){
                            s-=v[j]*v[j1]*v[j2]*v[j3]*v[j4]*((x/v[j]/v[j1]/v[j2]/v[j3]/v[j4]-1)*(x/v[j]/v[j1]/v[j2]/v[j3]/v[j4]))/2;
                            nr-=x/v[j]/v[j1]/v[j2]/v[j3]/v[j4];
                        }
                    }
                }
            }
        }
        for(j=0;j<d;j++){
            for(j1=j+1;j1<d;j1++){
                for(j2=j1+1;j2<d;j2++){
                    for(j3=j2+1;j3<d;j3++){
                        for(j4=j3+1;j4<d;j4++){
                            for(j5=j4+1;j5<d;j5++){
                                s+=v[j]*v[j1]*v[j2]*v[j3]*v[j4]*v[j5]*((x/v[j]/v[j1]/v[j2]/v[j3]/v[j4]/v[j5]-1)*(x/v[j]/v[j1]/v[j2]/v[j3]/v[j4]/v[j5]))/2;
                                nr+=x/v[j]/v[j1]/v[j2]/v[j3]/v[j4]/v[j5];
                            }
                        }
                    }
                }
            }
        }
        out<<2*s+x*nr<<"\n";
    }
    return 0;
}