基础题。
#include <iostream>
#include <cmath>
using namespace std;
const int MAXN = 55;
int stick[MAXN]; //每根棍子最上方的数
//判断x是否为平方数
bool isSquare(int x)
{
int sx = sqrt(x);
if (sx * sx == x)
return true;
else
return false;
}
int main()
{
int T;
cin >> T;
while (T--)
{
memset(stick, 0, sizeof(stick));
int N;
cin >> N;
int num = 1; //当前要放入的数
while (true)
{
int i;
for (i = 0; i < N; i++)
{
if (isSquare(num + stick[i]) || stick[i] == 0)
{
stick[i] = num;
++num;
break;
}
}
if (i == N) //当前数无法放入任何棍子
break;
}
cout << --num << endl;
}
return 0;
}
继续加油。