#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) 沿着一个单位方格的对角线向右下方向绘制。

下图展示了一条由 44 条线段组成的折线示例:

绘制完折线后,小雅会计算其长度。为此,他编写了一个 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 函数接受一个由字符 abc 组成的字符串作为参数(分别代表向右、向下或沿对角线移动)。sqrtl 是用于计算平方根的标准函数(来自 cmath 库)。你可以假设该函数在小雅的电脑、你的工作站以及评测系统中的运行结果完全一致。

小雅告诉了你 dlugosc 函数的运行结果(至少他是这么说的)。他想知道,在所有由不超过 10910^{9} 条线段组成的折线(即符合函数合法参数的字符串)中,有多少条折线经过该函数计算后,能得到与他给出的结果完全一致的字符串。请帮他回答这个问题。

输入格式

输入只有一行,包含一个实数 ll (0<l1090 < l \leq 10^{9}),该数值精确到小数点后六位,表示小雅给出的折线长度,即 dlugosc 函数预期的返回值。

输出格式

输出只有一行,包含满足条件的折线数量。若该数量超过 101810^{18},则应改为输出单词 SPORO

请注意,小雅可能在骗你,他给出的数值可能并不是任何合法参数调用 dlugosc 函数后的结果。在这种情况下,你应该输出 00

样例

输入

2.414214

输出

4