UOJ Logo

NOI.AC

4S 512MB
GoodBad[-22]
Statistics

题目描述

给定两个正整数 nk,你可以进行以下两种操作任意次(包括零次):

  • 选择一个整数 x 满足 0x<k,将 n 变为 kn+x。该操作每次花费 a 枚金币。每次选择的整数 x 可以不同。
  • n 变为 nk。该操作每次花费 b 枚金币。其中 nk 表示小于等于 nk 的最大整数。

给定正整数 m,求将 n 变为 m 的倍数最少需要花费几枚金币。请注意:0 是任何正整数的倍数。

输入格式

第一行输入一个整数 T表示测试数据组数。

对于每组测试数据,输入一行五个正整数 nkmab

输出格式

每组数据输出一行一个整数,代表将 n 变为 m 的倍数最少需要花费几枚金币。如果无法完成该目标,输出 1

输入样例1

3
101 4 207 3 5
114 514 19 19 810
1 1 3 1 1

输出样例1

11
0
-1

样例2见下载文件

对于第一组样例数据,一开始 n=101,最优操作如下:

  • 首先进行一次第二种操作,将 n 变为 n4=25,花费 5 枚金币。
  • 接下来进行一次第一种操作,选择 x=3,将 n 变为 4n+3=103,花费 3 枚金币。
  • 接下来进行一次第一种操作,选择 x=2,将 n 变为 4n+2=414,花费 3 枚金币。
  • 此时 414=2×207,满足 nm 的倍数。共花费 5+3+3=11 枚金币。

对于第二组样例数据,进行两次第二种操作将 n 变为 0。共花费 1+1=2 枚金币。

对于第三组样例数据,因为 n=114=6×19 已经是 m 的倍数,因此无需进行任何操作。共花费 0 枚金币。

数据范围

对于30%的数据,n,k,m10

对于60%的数据,T1000,k,m103

对于所有数据,1T105,1n10181k,m,a,b109

点此下载