- 平方之和2级1 2024.6
- 2024-07-18 21:17:46 @
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],f,sum=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
f=0;
sum=0;
for(int j=1;j<=a[i];j++)
{
for(int m=1;m<=a[i];m++)
{
sum=j*j+m*m;
if(a[i]==sum)
f++;
}
}
if(f==0)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
2 条评论
-
240714zj张逸凡 (张逸fan) LV 8 @ 2024-07-19 23:29:58
栓Q
-
2024-07-19 16:03:44@
你三层循环,最坏条件时间复杂度10*10^6*10^6,肯定炸了
#include<bits/stdc++.h> using namespace std; long long n,a[100005],f,sum=0; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) { f=0; sum=0; for(int j=1;j<=a[i];j++) { sum=a[i]-j; if(sum&&(floor(sqrt(sum))==sqrt(sum))&&(floor(sqrt(j))==sqrt(j))) { f++; break; } } if(f==0) cout<<"No"<<endl; else cout<<"Yes"<<endl; } return 0; }
这是你的代码,我改了一下,把一层循环去掉了。其实只要里面一层循环穷举一个数,那么另一个数就是ai-xx,然后判断它俩是不是完全平方数就行了。另外你return 0忘加了,给你补上了。
- 1
信息
- ID
- 2773
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 249
- 已通过
- 46
- 通过率
- 18%
- 上传者