Cod sursa(job #2120128)

Utilizator czlateaZlatea Cezar czlatea Data 1 februarie 2018 22:23:41
Problema Sum Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

int f [105];
bool sfg [100005];
int desc (int apbc)
{
    int i = 2, apcc = 0, k, capbc = apbc, res = apbc * (apbc + 1) / 2;
    k = (int) sqrt ((double) apbc);
    apbc /= 2;
    while (apbc > 1 && i <= k)
    {
        if (apbc % i == 0)
        {
            while (apbc % i == 0)
                apbc /= i;
            f [++ apcc] = i;
            int j = i;
            while (j <= capbc)
            {
                if (sfg [j] == 0)
                {
                    sfg [j] = 1;
                    res -= j;
                }
                j += i;
            }
        }

        i ++;
    }
    if (apbc > 1)
        {
            f[++ apcc] = apbc;
            int j = apbc;
            while (j <= capbc)
            {
                if (sfg [j] == 0)
                {
                    sfg [j] = 1;
                    res -= j;
                }
                j += apbc;
            }
        }
    return res;
}

int main()
{
    freopen ("sum.in", "r", stdin);
    freopen ("sum.out", "w", stdout);
    int t;
    scanf ("%d", &t);
    for (int i = 1; i <= t; i ++)
    {
        int k;
        scanf ("%d", &k);
        int p = desc (2 * k);
        for (int j = 1; j <= 2 * k; j ++)
            sfg [j] = 0;
        printf ("%d\n", p);
    }
    return 0;
}