Power Sum

Power Sum
#题目描述
给定一个正数 n, Kris需要找到一个正数 k 和一个数组 a,数组 a 是长度为k(1 ≤ k ≤ n+2)且(ai∈{-1,1}),满足∑ ai*i^2=n。
这对克里斯来说太难了,所以你必须帮助他。

输入:
包含多个测试用例。
第一行包含一个整数 T(1 ≤ T ≤ 100),表示测试用例的数量。
下一个 T 行包含一个整数 n (1 ≤ n ≤ 10 6)。
保证∑n≤3*10 7。

输出:
包含2T行。对于每个测试用例,输出两行。
第一行包含一个整数 k。
第二行包含长度为k的01字符串表示数组,其中 0第i个位置表示ai=-1,1表示ai=1。
如果有多个答案,请打印任何答案。(答案不唯一,所以同一个n可以有不同的样例)

解析:

对于任意的相邻的四个平方数 a=x^2,b=(x+1)^2,c=(x+2)^2,d=(x+3)^2,都有a-b-c+d=4。

所以就可以找到每一个 n 对应的数组了

#include 
using namespace std;
#define int long long 
#define ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
signed main()
{
    ios;
    int t;
    cin>>t;
    while (t--)
    {
        int n;
        cin>>n;
        string s;
        string a="1",b="0001",c="01",d="1001";
        int k=n%4;
        if (k==1) s +=a;
        else if (k==2) s +=b;
        else if (k==3) s +=c;
        for (int i=0;i

你可能感兴趣的:(算法)