shuifan @ 2024-12-15 14:21:38
#include<bits/stdc++.h>
using namespace std;
int n,a[1000000],cnt;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]+a[j]==sqrt(a[i]+a[j])*sqrt(a[i]+a[j])){
cnt++;
}
}
}
cout<<cnt;
return 0;
}
by Rigil_Kent @ 2024-12-15 14:26:28
开 long long
by szx1018 @ 2024-12-21 19:32:18
if(a[i]+a[j]==sqrt(a[i]+a[j])*sqrt(a[i]+a[j])){
cnt++;
}
sqrt()里面是double类型,你建的是int类型的数组。
@shuifan
by szx1018 @ 2024-12-21 19:40:19
if(a[i]+a[j]==sqrt(a[i]+a[j])*sqrt(a[i]+a[j])){
cnt++;
}
其次,if条件不对,应该判断sqrt(a[i]+a[j])是否为整数。@shuifan
by szx1018 @ 2024-12-21 19:45:39
修改后代码:
#include<bits/stdc++.h>
using namespace std;
int n,cnt;
double a[1000000];
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
int t=sqrt(a[i]+a[j]);//作一个类型转换
if(a[i]+a[j]==t*t){//如果sqrt(a[i]+a[j])为整数条件成立
cnt++;
}
}
}
cout<<cnt;
return 0;
}
@shuifan求关