这道题目是根据任何一个正整数都可以用四个正整数的平方和表示而得出的,只是题目叫我们求得是可以表示的最少数量,于是就用温柔的暴力试试看!
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,i,j;
while(scanf("%d",&n)!=-1)
{
int s=floor(sqrt(n*1.0));
if(s*s==n)
{
printf("1\n");
continue;
}
int ff=0;
for(i=1;i<=s;i++)
{
int ss=floor(sqrt((n-i*i)*1.0));
if(ss*ss+i*i==n)
{
ff=1;
printf("2\n");
break;
}
}
if(!ff)
{
for(i=1;i<=s;i++)
{
for(j=1;j<=s;j++)
{
if(i*i+j*j>n)break;
int ss=floor(sqrt((n-i*i-j*j)*1.0));
if(i*i+j*j+ss*ss==n)
{
printf("3\n");
ff=1;
break;
}
}
if(ff)
{
break;
}
}
}
if(!ff)
{
printf("4\n");
}
}
return 0;
}