数的平方和拆分

关于将一个数拆成多个数平方和的形式,我们可以用搜索来做。

#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;
}

猜你喜欢

转载自blog.csdn.net/qq_39766648/article/details/78138662
今日推荐