Numbers Summation

Professor Amit Gupta has given you a mathematical programming assignment. It goes as follows:

F(x,y) = sum of numbers that divide both x and y, i.e., sum of the common divisors of x and y.
Given the value of N, you are required to calculate the value of S.

S=i=1N j=iN F(i,j).

As the value of S can be large, find it modulo 109+7.

Example:

Input:  n = 5
Output: 33

Approach

C++

#include <bits/stdc++.h>
using namespace std;
#define N 1000000007
#define LL long long
#define mod 1000000007
#define invertMod6 166666668

long long numberSummation(long long mlong long n)
{
    long long ab;
    a = (n / m) + m;
    b = (n / m) + 1 - m;
    a = (a % mod) * (b % mod);
    a %= mod;
    a *= m;
    a %= mod;
    return a;
}
long long numberSummation2(long long n)
{
    long long ans;
    ans = (((n % mod) *
            ((n + 1) % mod)) %
           mod) *
          (((2 * n) % mod + 1) % mod);
    ans %= mod;
    ans *= invertMod6;
    ans %= mod;
    return ans;
}
int main()
{
    long long n = 5;
    long long ans = 0i;
    for (i = 1ans = 0i * i <= ni++)
    {
        ans += numberSummation(in);
        ans %= mod;
    }
    ans -= numberSummation2(i - 1);
    if (ans < 0)
    {
        ans += mod;
    }
    cout << ans << "\n";

    return 0;
}


No comments:

Post a Comment