题意:
给出一个数字n,要求出方阵的最小变长x,保证x*x的方针中有n个格子1,其余格子都是0,而且要保证方阵上下,左右都对称,输出x。
思路:
没什么想法,多画几个找规律,发现x一定是奇数,且于n满足一定的关系。注意3是需要特判。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, i;
scanf("%d", &n);
for (i = 1; (i * i + 1) / 2 < n; i += 2);
printf("%d\n", n == 3 ? 5 : i);
return 0;
}