A. 游戏设计

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

下文的所有参数均默认为整数。

作为一位游戏开发者,你设计了如下游戏,存在两个要素:

  1. 一个敌对生物,其血量为 m
  2. 主角的武器,分为 n 级,第 i 级的伤害是 i\times p

游戏的平衡性需要提前规划,所以你还有一个序列 \{a_n\} ,其含义如下:

  • a_i 表示敌对生物被第 i 级武器恰好攻击 a_i 下会死。

可惜你忘记了 p 具体是多少,所以你需要求出所有可能的 p 的个数。

如果可能有无数个 p ,那么请输出 xiaogougege

输入格式

输入格式

第一行两个正整数 n,m

第二行 n 个正整数,表示序列 \{a_n\}

输出格式

输出格式

一行一个整数,表示可能的 p 的个数,或字符串 xiaogougege,其具体含义见题目描述。

样例

样例 #1

样例输入 #1

3 3
3 2 1

样例输出 #1

1

数据范围与提示

【数据范围与提示】

对于所有测试数据,保证 1\leq n \leq 10^5 1\leq a_i,m\leq 10^9

每个测试点的具体限制见下表:

测试点编号 n\leq m,a_i\leq 特殊性质
1\sim 9 10^5 10^9 数据纯随机
10 \sim 12 3 5
13 \sim 20 10^5 10^9

你需要注意,上文纯随机数据的具体生成程序代码如下:

#include <bits/stdc++.h>
using namespace std;

int n, m, w;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int rand(int l, int r) {
  assert(l <= r);
  return uniform_int_distribution<>(l, r)(rng);
} 

int main() {
  scanf("%d%d%d", &n, &m, &w);
  printf("%d %d\n", n, m);
  for (int i = 1; i <= n; i ++) printf("%d%c", rand(1, w), " \n"[i == n]);
  return 0;
}

通俗的说,就是对于给定的 n,m,w(w\le 10^9) ,数据生成器会随机生成 n 个值域在 [1,w] 内的数,作为 \{a_n\}

【样例 1 解释】

当武器为 1 级时,分析可以发现 p 要满足 1 \leq p < \frac{3}{2}
当武器为 2 级时,分析可以发现 p 要满足 \frac{3}{4} \leq p < \frac{3}{2}
当武器为 3 级时,分析可以发现 p 要满足 1 \leq p

p 是整数。综上,只有当 p = 1 时满足题目所述条件。