From d59a0467aaa1506b43487a56e298e848e51fb967 Mon Sep 17 00:00:00 2001 From: hanyixuanten Date: Thu, 22 Oct 2026 11:27:13 +0000 Subject: [PATCH] new file: P11310.cpp --- P11310.cpp | 28 +++++++++++++++++++ P11310.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 P11310.cpp create mode 100644 P11310.md diff --git a/P11310.cpp b/P11310.cpp new file mode 100644 index 0000000..c018e18 --- /dev/null +++ b/P11310.cpp @@ -0,0 +1,28 @@ +#include +#define int long long +using namespace std; +int n, t; +signed main() { + scanf("%lld", &t); + while (t--) { + scanf("%lld", &n); + if (n == 0) { + printf("NO!\n"); + continue; + } + int cnt = 0; + while (n % 2 == 0) + n /= 2, cnt++; + printf("%lld\n", cnt + 1); + } + return 0; +} +/* +1.5*2 +2.5*3*8 +3.5*4 +4.5*5*23* + +奇数.5 +0.5 * n = 奇数 +*/ \ No newline at end of file diff --git a/P11310.md b/P11310.md new file mode 100644 index 0000000..c22c58c --- /dev/null +++ b/P11310.md @@ -0,0 +1,80 @@ +# P11310 「WPOI-R2」无穷的迭代器 + +## 题目背景 + +You can also see the pdf at the bottom of the chinese problem statement. + +## 题目描述 + +对于实数 $ r $,记一次操作为: + +* 找到不小于 $ r $ 的最小整数即 $ \lceil r \rceil $,并将 $ r $ 的值乘上 $ \lceil r \rceil $。 + +现在给定非负整数 $ k $,对于 $ r=k+\frac{1}{2} $,至少需要对 $ r $ 进行几次操作才能使 $ r $ 为整数? + +## 输入格式 + +本题多测,第一行一个整数 $ T $ 代表数据组数。 + +对于每组数据: + +一行一个整数 $k$,含义见题目描述。 + +## 输出格式 + +对于每组数据: + +若可以变成整数,输出一行一个整数代表你找到的最小的次数。 + +若不能变成整数,输出一行 `NO!`。 + +## 输入输出样例 #1 + +### 输入 #1 + +``` +1 +4 +``` + +### 输出 #1 + +``` +3 +``` + +## 输入输出样例 #2 + +### 输入 #2 + +``` +1 +0 +``` + +### 输出 #2 + +``` +NO! +``` + +## 说明/提示 + +**【样例 1 解释】** + +| 操作次数 | $ r= $ | +|:-:|:-:| +| 初始 | $ \frac{9}{2} $ | +| $ 1 $ | $ \frac{45}{2} $ | +| $ 2 $ | $ \frac{1035}{2} $ | +| $ 3 $ | $ 268065 $ | + +**【数据规模与约定】** + +**提示:本题采用捆绑计分。** + +对于 $ 100\% $ 的数据,$ 1 \le T \le 20 $,$ 0 \le k \le 10^{18} $。 + +* Subtask 1(15 pts):$ 1 \le k \le 10 $。 +* Subtask 2(40 pts):$ 1 \le k \le 100 $。 +* Subtask 3(45 pts):$ 0 \le k \le 10^{18} $。 \ No newline at end of file