Description
Consider some square matrixAwith sidenconsisting of zeros and ones. There arenrows numbered from1tonfrom top to bottom andncolumns numbered from1tonfrom left to right in this matrix. We'll denote the element of the matrix which is located at the intersection of thei-row and thej-th column asAi, j.
Let's call matrixAclearif no two cells containing ones have a common side.
Let's call matrixAsymmetricalif it matches the matrices formed from it by a horizontal and/or a vertical reflection. Formally, for each pair(i, j)(1 ≤ i, j ≤ n)both of the following conditions must be met:Ai, j = An - i + 1, jandAi, j = Ai, n - j + 1.
Let's define thesharpnessof matrixAas the number of ones in it.
Given integerx, your task is to find the smallest positive integernsuch that there exists a clear symmetrical matrixAwith sidenand sharpnessx.
Input
The only line contains a single integerx(1 ≤ x ≤ 100) — the required sharpness of the matrix.
Output
Print a single number — the sought value ofn.
Sample Input
4
3
9
5
Hint
The figure below shows the matrices that correspond to the samples:
#include<stdio.h>
int main()
{
int ans[18]={0},test;
for(int i=1;i<18;i+=2)
{
ans[i]=i*(i/2+1)-i/2;
}
while(scanf("%d",&test)!=EOF)
{
for(int i=1;i<101;i+=2)
{
if(test==3){printf("5\n");break;}
else
if(test<=ans[i])
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
本文探讨了如何找到最小正整数n,使得存在一个边长为n的清晰且对称的矩阵,该矩阵中1的数量等于给定的整数x。文章提供了一个具体的算法实现方案。
2549

被折叠的 条评论
为什么被折叠?



