Pairwise Products

Misha is given a number N. You are required to help Misha determine the summation of the pairwise product of its divisors.

Example:

Input:  n = 4
Output: 14

Approach

C++

#include <bits/stdc++.h>
using namespace std;

const long long MX = 1e7;
const long long preMX = 664579;

long long spf[MX + 1], pre[preMX + 1];

long long pairwiseProduct(long long nlong long p)
{
    long long res = 1x = n;
    for (int i = 0i < p; ++ix *= n)
        res += x;
    return res;
}

int main()
{

    for (int i = 2cnt = 0i <= MXi++)
    {
        if (spf[i] == 0)
            spf[i] = ipre[cnt++] = i;
        for (int j = 0j < cnt and pre[j] <= spf[i]; ++j)
        {
            long long idx = i * pre[j];
            if (idx > MX)
                break;
            spf[idx] = pre[j];
        }
    }

    long long n = 4res = 1sres = 1;

    while (n != 1)
    {
        long long nn = spf[n], times = 0;
        while (n % nn == 0)
        {
            n /= nn;
            times++;
        }
        res *= pairwiseProduct(nntimes);
        sres *= pairwiseProduct(nn * nntimes);
    }
    cout << ((res * res - sres) >> 1<< "\n";

    return 0;
}


No comments:

Post a Comment