关于将一个数拆成多个数平方和的形式,我们可以用搜索来做。
#include<cstdio>
#include<cmath>
int n,q;
bool dfs(int k,int w,int v)
{
if(w==n)return 1;
if(w>n) return 0;
for(int j=k+1;j<=q;++j)
{
if(dfs(j,w+j*j,v+1))
{
if(v==0) printf("%d^2",j);
else printf("%d^2+",j);
return 1;
}
}
return 0;
}
int main()
{
scanf("%d",&n);
q=sqrt(n);
printf("k(n)=");
if(!dfs(0,0,0))printf("-1");
return 0;
}