Problem:
Score : 300 points

Problem Statement

Given is a positive integer N.
How many tuples (A,B,C) of positive integers satisfy A \times B + C = N?

Constraints

2 \leq N \leq 10^6

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N

Output

Print the answer.

Sample Input 1

3

Sample Output 1

3

There are 3 tuples of integers that satisfy A \times B + C = 3: (A, B, C) = (1, 1, 2), (1, 2, 1), (2, 1, 1).

Sample Input 2

100

Sample Output 2

473

Sample Input 3

1000000

Sample Output 3

13969985

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#include<bits/stdc++.h>
#include<string.h>
using namespace std;
#define io ios_base::sync_with_stdio(false);cin.tie(NULL)
#define ll long long
#define ii pair<int,int>

ll number_of_divisors(ll n)
{
    ll ans = 1;

	for (ll i=2; i*i <= n; i++){
		if (n%i != 0) continue;
		ll cnt = 0;
		while (n%i == 0){
			n /= i;
			cnt++;
		}
		ans *= (cnt+1);
	}
	if (n > 1){
		ans *= 2;
	}
	return ans;
}
ll aa[1000004]; ll bb[200004];
int main()
{
    io;
    ll a,b,c,d,m,n,i,j,k,l,t,x,y,z;
    ll ans=0;
    ll maxi=INT_MIN; ll mini=INT_MAX,sum=0,mul=1;

        vector<ll>vec;
        string st,ch;
        maxi=INT_MIN, mini=INT_MAX;
        sum=0,mul=1;
        cin>>n;
        x=n;
        for(i=0;i<=1000000;i++) aa[i]=0;
        while(n--)
        {
            if(aa[n]==0)
            {
            a=number_of_divisors(n);
            aa[n]=a;
            }
            sum+=aa[n];
            if(n==1) break;
        }
        cout<<sum<<endl;

    return 0;
}