CF287B Pipeline

题目描述

Vova,Ultimate Thule 新晋萨满,想要建造一条管道。由于 Ultimate Thule 恰好有 $n$ 所房子,Vova 想让城市里正好有 $n$ 根水管,每根都应该被连到供水系统。某根水管只有当有水流出时才能连接到供水系统。最开始,Vova 只有一根有水流出的水管。此外,Vova 拥有若干分流器。 分流器是一种结构,有一个输入口(可以接入一根水管)和 $x$ 个输出口。当分流器连接到水管时,每个输出口都有水流出。你可以认为输出口就是普通水管。例如,如果有水流出,则可以把这种水管连到供水系统。每根水管最多只能连接一个分流器。 下图展示了一个 $4$ 输出口的分流器: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF287B/d347ad4c15760876dd4efdb4df653ce9dd1bfe47.png) Vova 每种分流器各有一个:分别有 $2, 3, 4, ..., k$ 个输出口。请帮助 Vova 用最少数量的分流器建造出满足要求的管道系统,或说明根本无法实现。 Vova 需要最终有且只有 $n$ 根有水流出的水管。注意,这些水管中有些可能就是分流器的输出口。

输入格式

第一行输入两个用空格分隔的整数 $n$ 和 $k$,满足 $1\le n\le 10^{18}$,$2\le k\le 10^9$。 请不要在 C++ 中使用 %lld 格式符号来读入或输出 64 位整数。推荐使用 cin/cout 流或 %I64d 格式符号。

输出格式

输出一个整数,表示为建造管道系统所需的最少分流器个数。如果无法用这些分流器完成任务,输出 $-1$。

说明/提示

由 ChatGPT 5 翻译