游客 Signup | Login
中文 | En

3507 - 喵呜F

老喵呜要去买东西,结果结账的时候发现,店家没有零钱找!

         不过对于任性的老喵呜来说,不找钱就不找呗,偶尔土豪一次又何妨,但是想一想,还是不能亏太多。

         现在,他手头有两种金额的钱,分别是AB,然后他需要付给店家N元,但是由于店家没有零钱,所以,如果AB这两种金额的钱凑不出N,他就要给店家大于N的钱数。所以,他现在想知道,他最少要付多少钱。在此可以假设老喵呜有无限多个A元钱和B元钱。

Input

第一行输入一个数T,表示测试数据个数,对于每组数据,输入三个数NAB(1<=N,A,B<=10^9)

Output

输出有T行,每一行表示一组测试数据的输出,对于每组测试数据,输出一个数,表示老喵呜最少要付的钱数。

Examples

Input

3
17 7 9
21 7 13
17 7 13

Output

18
21
20

Hint

第一组数据:18=7*0+9*2

第二组数据:21=7*3+13*0

Solution C++

#include <stdio.h>
#include <algorithm>
using namespace std;

int main()
{
    //freopen("d.in","r",stdin);
    //freopen("d.out","w",stdout);
    int A,B,N,T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d",&N,&A,&B);
        long long ans=1000000000000ll;
        if (A<B) swap(A,B);
        for (int i=0;i<=min(N/A+1,B);i++)
        {
            int forB=N-A*i;
            if (forB<0) ans=min(ans,(long long)A*i);
            else ans=min(ans,(long long)(B-forB%B)%B+N);
        }
        printf("%lld\n",ans);
    }
}

Hint

第一组数据:18=7*0+9*2

第二组数据:21=7*3+13*0

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题