AT_dwacon2018_final_d ニワンゴくんとゲーム
题目描述
dwango 公司的员工“ニワンゴくん”正在玩一个游戏。在这个游戏中,会出现 $Q$ 个敌人,玩家需要巧妙操作来击败这些敌人。每个敌人都有一个被称为**体力**的数值,第 $i$ 个敌人的体力为 $N_i$。
ニワンゴくん操作的玩家有一个被称为**魔力**的数值。每当遭遇敌人时,玩家的魔力为 $1$。需要注意的是,每当遭遇新敌人时,魔力都会重置为 $1$。ニワンゴくん每回合可以进行以下任意一种操作:
- 操作 $1$:将魔力增加 $1$。
- 操作 $2$:假设当前魔力为 $x$,将魔力变为 $2x$。
- 操作 $3$:假设当前魔力为 $x$,将魔力变为 $2x+1$。
当玩家的魔力**恰好**等于敌人的体力时,会发动特殊魔法,敌人会被击败。需要注意:如果魔力超过了敌人的体力,则无法再击败该敌人,因此不能进行使魔力超过敌人体力的操作。玩家的操作不会影响敌人的体力。
ニワンゴくん很好奇,对于每个敌人,玩家有多少种不同的操作方法能够击败敌人。在这里,如果在任意一步选择的操作的编号不同,即便中间的魔力变化完全相同,也视为不同的操作方法。
请对于每个敌人,计算出将魔力提高到等于敌人体力的操作方法总数,结果对 $1\,000\,000\,007$ 取模。
输入格式
输入为以下格式,从标准输入读取。
> $Q$ $N_1$ $N_2$ $:$ $N_Q$
输出格式
请输出 $Q$ 行,第 $i$ 行输出能击败第 $i$ 个敌人的操作方法总数,对 $1\,000\,000\,007$ 取模。
说明/提示
## 限制条件
- $1 \leq Q \leq 200$
- $1 \leq N_i \leq 10^{18}$($1 \leq i \leq Q$)
- $N_i$ 是整数
## 部分得分
- 若对于 $Q=1$ 且 $1 \leq N_1 \leq 10^{14}$ 的数据集能输出正确答案,将获得 $1300$ 分。
## 样例解释 1
第 $1$ 个敌人的体力为 $4$。将魔力恰好提升到 $4$ 的操作方法有如下 $5$ 种:
- 先执行操作 $1$,再操作 $1$,再操作 $1$。
- 先操作 $1$,再操作 $2$。
- 先操作 $2$,再操作 $1$,再操作 $1$。
- 先操作 $2$,再操作 $2$。
- 先操作 $3$,再操作 $1$。
需要注意,即使在第一步选择了操作 $1$ 或操作 $2$,魔力的变化可能一样,但因为操作编号不同,这两种操作方法是不同的。
## 样例解释 2
对于第 $1$ 个敌人,有 $2$ 种方法可以击败。对于第 $2$ 个敌人,即使什么操作都不进行,一开始魔力即为敌人当前体力。需要注意的是,每次遇到新敌人,魔力都会重置为 $1$。
## 样例解释 3
别忘了最后的结果要对 $1\,000\,000\,007$ 取模。
由 ChatGPT 5 翻译