2024年3月三级:完全平方数

阅读量: 226 编辑

完全平方数

小杨同学有⼀个包含n个非负整数的序列A,他想要知道其中有多少对下标组合<i, j>(1≤i, j≤n, i<j ),使得Ai+Aj是完全平方数。如果x是完全平方数,则存在非负整数y使得y*y=x 。

【输入格式】

第⼀行⼀个非负整数n,表示非负整数个数。

第二行包含 n个非负整数A₁,A₂,...Aₙ,表示序列A包含的非负整数。

对于全部数据,保证有1≤n≤1000, 0≤Aᵢ≤100000 。

【输出格式】

输出⼀个非负整数,表示和是完全平方数的非负整数对数。

【输入样例】

5
1 4 3 3 5

【输出样例】

3

【参考程序】

// 爱码岛编程
#include <bits/stdc++.h>
using namespace std;

const int N = 1010;
int a[N];

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            int m = a[i] + a[j];
            int t = sqrt(m + 1e-7);
            if (t * t == m)
                ans++;
        }
    }
    cout << ans << "\n";
}
爱码岛编程公众号
试卷资料
爱码岛编程小程序
在线刷题
苏ICP备13052010号
©2023 南京匠成信息科技有限公司