Cod sursa(job #1699468)

Utilizator Bodo171Bogdan Pop Bodo171 Data 7 mai 2016 13:36:52
Problema Sum Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include<fstream>
#include<vector>
#include<bitset>
using namespace std;
unsigned int i,j,num,n,x,k,mark[200005],a[100005],nmax;
unsigned long long s,sum,stot;
vector<unsigned int> v[100005];
bitset<100005> b;
bitset<100005> ap;
int main()
{
    ifstream f("sum.in");
    ofstream g("sum.out");
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        ap[a[i]]=1;
        if(a[i]>nmax) nmax=a[i];
    }
    for(i=2;i<=nmax;i++)
        if(!b[i])
        for(j=i;j<=nmax;j+=i)
    {
        if(ap[j])v[j].push_back(i);
        b[j]=1;
    }
    for(unsigned int cnt=1;cnt<=n;cnt++)
    {
        x=a[cnt];s=0;
        for(k=0;k<v[x].size();k++)
        {
            num=v[x][k];
            for(i=num;i<=2*x;i+=num)
                if(mark[i]!=cnt)
            {mark[i]=cnt;s+=i;}
        }
        stot=1ULL*x*(2*x+1);
        sum=1ULL*stot-s;
        g<<sum<<'\n';
    }
    return 0;
}