1 条题解
-
0
#include<iostream> using namespace std; // [1] arr:存储输入的非负整数序列;brr:存储所有i<j的两数之和 int arr[1100]; int brr[1000100]={}; int main(){ int n; // [2] n:输入的非负整数序列的长度 cin>>n; // [3] 读取n个非负整数,存入数组arr for(int i=0;i<n;i++) cin>>arr[i]; int x=0; // [4] x:brr数组的索引,用于统计两数之和的数量 // [5] 双重循环生成所有i<j的两数之和,存入brr数组 for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ brr[x++]=arr[i]+arr[j]; } } int sum=0; // [6] sum:统计两数之和为完全平方数的数对数量 // [7] 遍历所有两数之和,判断是否为完全平方数 for(int i=0;i<x;i++){ for(int j=0;j*j<=brr[i];j++){ if(j*j==brr[i]){ // 若当前和是j的平方,说明是完全平方数 sum++; break; // 找到后跳出内层循环,避免重复判断 } } } cout<<sum; // [8] 输出满足条件的数对总数 return 0; }
- 1
信息
- ID
- 827
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者