CF1531C Симметричный амфитеатр

题目描述

所有人都在为 VK Fest 2021 做准备!为了让观众能更好地看到主舞台,计划建造一个露天剧场。在本题中,我们将从侧面观察它——它的示意图将呈现为由 $n$ 个相同的正方形组成的阶梯形状。阶梯是由一个或多个正方形塔并排组成的图形,且塔的高度从左到右不递增。 下图展示了由 $12$ 个正方形组成的三种不同图形。前两个图形是阶梯,第三个不是。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1531C/c3f29f4449b740c0b9e4bf33f783c2056dec450f.png) 出于美观考虑,决定露天剧场必须是对称的。形式化地说,如果将其示意图关于直线 $x = y$ 反射,得到的图形与原图完全相同,则称该露天剧场是对称的(其中 $x$ 轴从左到右,$y$ 轴从下到上)。例如,上图中的第一个阶梯是对称的,第二个不是。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1531C/c8b6a179d527265c360f8c3336d2da1274d329f3.png) 此外,露天剧场还必须尽可能紧凑——也就是说,能够容纳它的最小正方形的边长应尽可能小。 给定数字 $n$,请画出由恰好 $n$ 个正方形组成、满足所有条件的露天剧场示意图。

输入格式

输入仅一行,包含一个整数 $n$($1 \le n \le 100$),表示需要用多少个正方形组成露天剧场的示意图。

输出格式

如果不存在由 $n$ 个正方形组成的露天剧场示意图,输出唯一的数字 $-1$。 否则,第一行输出一个整数 $m$,表示示意图的最小可能行数和列数。接下来输出 $m$ 行,描述该示意图。每行应恰好包含 $m$ 个字符,字符可以是小写字母 'o' 或 '.',其中 'o' 表示已建造的正方形,'.' 表示空白位置。示意图中应恰好有 $n$ 个 'o'。左下角的格子必须包含一个正方形。如果存在多个满足最小 $m$ 的答案,输出其中任意一个。

说明/提示

由 ChatGPT 4.1 翻译