#loj5612. 「PA 2016 Final」Łamana
「PA 2016 Final」Łamana
[AdditionalFile5612.zip](file://AdditionalFile5612.zip?type=additional_file)
#5612. 「PA 2016 Final」Łamana
标签: 传统 | 时间限制: 1000 ms | 内存限制: 256 MiB |
题目描述
题目译自 PA 2016 Final Łamana
小雅在一张巨大的方格纸上按照以下方式绘制折线。他从方格纸的左上角开始,笔不离纸地绘制出连续的线段,每条线段有三种绘制方式:
- (a) 沿着方格的边向右绘制(长度为一个单位方格的边长);
- (b) 沿着方格的边向下绘制(长度为一个单位方格的边长);
- (c) 沿着一个单位方格的对角线向右下方向绘制。
下图展示了一条由 条线段组成的折线示例:

绘制完折线后,小雅会计算其长度。为此,他编写了一个 C++ 函数:
std::string dlugosc(const std::string& lamana) {
int proste = 0, przekatne = 0;
for (char odcinek : lamana) {
if (odcinek == 'c')
przekatne++;
else
proste++;
}
long double wynik = sqrtl(2.0) * przekatne + proste;
char buf[30];
sprintf(buf, "%.6Lf", wynik);
return buf;
}
dlugosc 函数接受一个由字符 a、b 或 c 组成的字符串作为参数(分别代表向右、向下或沿对角线移动)。sqrtl 是用于计算平方根的标准函数(来自 cmath 库)。你可以假设该函数在小雅的电脑、你的工作站以及评测系统中的运行结果完全一致。
小雅告诉了你 dlugosc 函数的运行结果(至少他是这么说的)。他想知道,在所有由不超过 条线段组成的折线(即符合函数合法参数的字符串)中,有多少条折线经过该函数计算后,能得到与他给出的结果完全一致的字符串。请帮他回答这个问题。
输入格式
输入只有一行,包含一个实数 (),该数值精确到小数点后六位,表示小雅给出的折线长度,即 dlugosc 函数预期的返回值。
输出格式
输出只有一行,包含满足条件的折线数量。若该数量超过 ,则应改为输出单词 SPORO。
请注意,小雅可能在骗你,他给出的数值可能并不是任何合法参数调用 dlugosc 函数后的结果。在这种情况下,你应该输出 。
样例
输入
2.414214
输出
4