我是比较擅长写出几项然后找规律进行
题目理解
当 x 增加一个单位 可以增加 y 个正方形
当 y 增加一个单位 可以增加 x 个正方形
个数n = 1 2 3 4 5 6 7 8 9 10 11 12 …
边数res=2 3 4 4 5 5 6 6 6 7 7 7 …
不难从 n 和 res 中总结出规律 (也可以画图画出)
当 n =1 2 3 5 7 10 13 … 是边数加一的点 而 n 的差值为 1 1 2 2 3 3 …
两个通项公式 一个是 n 的个数 另一个是需要画的边数res
首项 为 t=1 ,res=2;
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int t;
cin >>t;
while(t--)
{
int n;
cin >>n;
int t=1,res=2;
for(int i=1;;i++)
{
for(int j=1;j<=2;j++) //每个 i 进行两次计算 例如 1 1 2 2 3 3 ...
{
if(t+i<=n)
{
t+=i;
res++;
}
else
break;
}
if(t+i>n) break;
}
cout <<res <<endl;
}
return 0;
}