直接暴力的话 四层循环 很可能超时 这里用到了小技巧
#include<stdio.h> #include<iostream> #include<cmath> using namespace std; int a[5000001]; int main(){ int n; cin>>n; int flag=0; for(int i=0;i<=(int)sqrt(n);i++){ for(int j=i;j<=(int)sqrt(n);j++){ for(int k=j;k<=(int)sqrt(n);k++){ int t=n-i*i-j*j-k*k; if(sqrt(t)==(int)sqrt(t)){ //cout<<t<<endl; printf("%d %d %d %d ",i,j,k,(int)sqrt(t)); flag=1; break; } } if(flag==1) break; } if(flag==1) break; } return 0; }