小红做梦
题号:NC311245
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红定义一个十进制整数是好数,当且仅当这个数至少有 4 位,且最高(从左往右数)四位数字是 100510061007100810091010 中的一个。

\hspace{15pt}现在小红拿到了一个十进制整数 x,她希望将 x 变为一个好数,为此她能进行任意次操作一:
\hspace{23pt}\bullet\,操作一:花费 a 的代价将 x 变为 \lfloor \tfrac{x}{10} \rfloor
\hspace{15pt}当全部操作一完成后,她可以进行任意次操作二:
\hspace{23pt}\bullet\,操作二:花费 b 的代价将 x 变为 x + c
\hspace{15pt}她想知道,将 x 变为好数的最小代价是多少?

【名词解释】
\hspace{15pt}\lfloor x \rfloor:代表对 x 进行下取整操作,得到不超过 x 的最大整数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在一行上输入四个整数 x, a, b, c\left(1 \leqq x \leqq 10^{14};\ 1 \leqq a, b, c \leqq 10^4\right),表示小红拿到的数字、两种操作的参数。

输出描述:

\hspace{15pt}对于每组测试数据,新起一行输出一个整数,表示将 x 变为好数的最小代价。
示例1

输入

复制
3
1004 1000 1 1
1004 1000 1 7
1145141919810 1145 1419 1981

输出

复制
1
1130
73015

说明

\hspace{15pt}对于第一组测试数据,最优操作方案为:不进行操作一,随后进行一次操作二,x 变为 1004 + 1 = 1005,代价为 1

\hspace{15pt}对于第二组测试数据,最优操作方案为:
\hspace{23pt}\bullet\,进行 1 次操作一,x 变为 \lfloor \tfrac{1004}{10} \rfloor = 100,代价为 1000
\hspace{23pt}\bullet\,进行 130 次操作二,x 变为 100 + 130 \times 7 = 1010,代价为 130 \times 1 = 130
\hspace{15pt}总代价为 1000 + 130 = 1130