Величні пари#12265

Величні пари (Розбір)

Автор проблеми:

De3b0o

Підготовлено:

De3b0o

Редагував:

Hasan Saleh (MathModel)

Рішення

Щоб пара () була величною, вона повинна задовольняти наступну умову:

  • a_i a_j

Пара (), де (i,j \ge 1000) не може бути величною, оскільки тоді i \cdot j \ge 10^6 \ge a_i + a_j.

Отже, ми можемо для кожного перевірити, чи є пари () (1 \le i \le \min(j,1000)) величними.

Складність \mathcal{O}(1000 \cdot \sum(n)).


#include<bits/stdc++.h>
#define ll long long
#define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 
using namespace std;

const ll N = 1e5+9;

ll n,ans;
ll a[N];

int main()
{
    d3
    ll T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        for(int i = 1 ; n>=i ; i++)
            cin >> a[i];
        ans=0;
        for(int i = 1 ; n>=i ; i++)
        {
            for(int j = 1 ; min(i,1000)>=j ; j++)
            {
                if(a[i]+a[j]==i*j)
                    ans++;
            }
        }
        cout << ans << "\n";
    }
}