题目描述
译自 ROIR 2017 Day1 T1. Кампус
拜特堡大学的新校园建筑有 n 层楼,从下到上编号为 1 到 n。学生房间分布在多个单元中。
在每个单元中,楼层编号是 k 的倍数的楼层上每个有 x 个房间,其他楼层上每个有 y 个房间。
每个单元内的房间编号是连续的自然数。第一层房间的编号在该单元中最小,接着是第二层的房间编号,依此类推。第一个单元的房间编号从 1 开始,每个后续单元的房间编号从前一个单元最大房间编号的下一个数字开始。
如下图所示,展示了一栋有 n=7 层楼、3 个单元,且参数为 k=3、x=2、y=3 的建筑中房间的编号。
|
1 单元 |
2 单元 |
3 单元 |
| 第 7 层 |
17,18,19 |
36,37,38 |
55,56,57 |
| 第 6 层 |
15,16 |
34,35 |
53,54 |
| 第 5 层 |
12,13,14 |
31,32,33 |
50,51,52 |
| 第 4 层 |
9,10,11 |
28,29,30 |
47,48,49 |
| 第 3 层 |
7,8 |
26,27 |
45,46 |
| 第 2 层 |
4,5,6 |
23,24,25 |
42,43,44 |
| 第 1 层 |
1,2,3 |
20,21,22 |
39,40,41 |
为了组织学生的入住安排,校园管理部门需要根据房间编号快速确定其所在的楼层。
你的任务是编写一个程序,根据给定的 n,k,x,y,以及房间编号,确定每个房间所在楼层。
输入格式
输入文件的第一行包含四个自然数 n,k,x,y $(1 \leq n \leq 10^{9}, 1 \leq k \leq n, 1 \leq x, y \leq 10^{9})$。相邻数字之间用一个空格分隔。
第二行包含一个自然数 q (1≤q≤1000),表示需要确定楼层的房间编号数量。
第三行包含 q 个整数 a1,a2,…,aq (1≤ai≤1018),表示房间编号。可以假设建筑有足够多的单元,使得所有给定的房间编号都存在。
输出格式
输出 q 行,每行一个数字。对于输入文件中给出的每个房间编号,输出其所在的楼层编号。
7 3 2 3
4
1 19 20 50
1
7
1
5
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
分值 |
n,x,y 的限制 |
q,ai 的限制 |
子任务以来 |
| 1 |
31 |
1≤n≤10,1≤x,y≤10 |
q=1,1≤ai≤100 |
|
| 2 |
19 |
1≤n≤107,1≤x,y≤109 |
q=1,1≤ai≤107 |
1 |
| 3 |
16 |
1≤n≤109,1≤x,y≤109,x=y |
1≤q≤1000,1≤ai≤1018 |
|
| 4 |
34 |
1≤n≤109,1≤x,y≤109 |
1≤q≤1000,1≤ai≤1018 |
1,2,3 |