#3943. [GESP2403 三级] 完全平⽅数
[GESP2403 三级] 完全平⽅数
完全平⽅数
题目描述
⼩杨同学有⼀个包含 个⾮负整数的序列 ,他想要知道其中有多少对下标组合 ( ),使得 是完全平⽅数。 如果 是完全平⽅数,则存在⾮负整数 使得 。
输入格式
第⼀⾏⼀个⾮负整数 ,表⽰⾮负整数个数。 第⼆⾏包含 个⾮负整数 ,表⽰序列 包含的⾮负整数。
输出格式
输出⼀个⾮负整数,表⽰和是完全平⽅数的⾮负整数对数。 3.2.4 样例1 1 5 2 1 4 3 3 5 1 3 对于全部数据,保证有 。 3.2.5 参考程序 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 1010; 4 int a[N]; 5 int main(){ 6 int n; 7 cin >> n; 8 for(int i=1;i<=n;i++){ 9 cin>>a[i]; 10 } 11 int ans=0; 12 for(int i=1;i<=n;i++){ 13 for(int j=i+1;j<=n;j++){ 14 int m = a[i] + a[j]; 15 int t = sqrt(m + 1e-7); 16 if(t * t == m) 17 ans++; 18 } 19 } 20 cout<<ans<<"\n"; 21 }
样例输入 #1
1 5
2 1 4 3 3 5
1 3
样例输出 #1
数据范围
见题目描述
知识点与难度
本题涉及的知识点从属于 GESP 3级,难度等级:⭐⭐ 。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 / 特殊性质 |
| 2 | 15 | 9~11 | Hack |
| 3 | 30 | 12~20 | 中大规模 |
| 4 | 25 | 21~25 | 随机回归 |
生测试数据后,按实际 subtask 分组改写上表。