qb#P10006. 手账里的「双生日」

手账里的「双生日」

故事背景

新年的第一天,你和朋友约好做一整年的「手账打卡」:每个月用一页纸记录好天气、心情和一张小照片。你们用的简约手账把一周的七天都用 1 到 ww 这样的编号来标出来(比如 1 代表周一),而且这本手账的设计师很有个性——一周正好有 ww 天,且 ww 是个质数。

这本手账的一年总共有 mm 个月,每个月有 dd 天;新年第一天(1 月 1 日)印着「星期 1」。 你们约定了一个有点浪漫的规则:如果 xx 月第 yy刚好是星期 aa,而同时yy 月第 xx刚好是星期 bb,那么就把这两天配成一对「双生日」,在手账上彼此对贴同色的便签。我们用有序二元组 (x,y)(x,y) 来表示这样的一对。

小贴士:允许 x=yx=y。这时两条记录其实指向同一天,也照样算作一对。

你的任务是:在这一整年里,一共有多少对「双生日」?


题目描述

给定多组数据。每组数据给出 m,d,w,a,bm,d,w,a,b 的取值,含义如下:

  • 一年有 mm 个月;
  • 每个月有 dd 天;
  • 一周有 ww 天(并且 ww 为质数),星期用 1w1\sim w 编号;
  • 要求满足:
    • xx 月第 yy 天是星期 aa
    • yy 月第 xx 天是星期 bb

其中 1 月 1 日为星期 1。请统计满足条件的有序对 (x,y)(x,y) 的个数(1xm,1yd1\le x\le m,\,1\le y\le d)。


输入格式

多组输入。

第一行一个整数 TT 表示数据组数。 接下来 TT 行,每行五个正整数 m,d,w,a,bm, d, w, a, b


输出格式

输出共 TT 行,每行一个整数,表示该组数据下「双生日」的对数。


样例

样例输入

3
4 5 7 2 3
5 4 3 1 1
114514 1919810 65537 824 127

样例输出

1
6
4

样例说明

  • 对于第一组数据:2 月 4 日是星期 2,4 月 2 日是星期 3,所以 (2,4)(2,4) 是一对双生日。
  • 对于第二组数据:共有 6 对,分别为 (1,1),(1,4),(2,3),(3,2),(4,1),(4,4)(1,1),(1,4),(2,3),(3,2),(4,1),(4,4)

说明与约定

  • 星期从 1 数到 ww,循环往复;1 月 1 日记作星期 1。
  • 保证 ww 是质数。
  • 你只需要输出对数,不需要列出所有配对。

测试点编号 数据范围
适用于全部 11日为星期1;星期编号1w循环;w为质数1 月 1 日为星期 1;星期编号 1…w 循环;w 为质数
测试点 1 m=12d=30w=7m = 12,d = 30,w = 7
测试点 2–3 m,d1000m, d ≤ 1000
测试点 4–6 w105w ≤ 10^5
测试点 7–8 在合法范围内随机生成(其余同全局约束)
测试点 9–10 T10m,d,w109a,b[1,w]w为质数T ≤ 10,m, d, w ≤ 10^9,a, b ∈ [1, w],w 为质数