给定一个商品的价格,再给一个价格提高到的倍数,求使得商品扩大到多少倍时使得商品价格最后的0最多,如果有多个价格0一样多,输出最大的那一个。如果不可能得到一个后缀0多的价格,输出扩大系数最多时的价格(n*m)。
/*思路:先找出n中未成对的2或5,由m来补,再从m中找剩下的10(如果有的话),然后看看能是整0的几倍*/
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
string s;
#define maxn 03f3f3f3f
#define int long long
void solve()
{
int n,m;
vector<int>v;
cin >> n>>m;
int ans = 0;
int mm = 0;
int cnt2=0, cnt5=0;
int x = n;
while (!(x % 2))//2的个数
{
cnt2++;
x /= 2;
}
while (!(x% 5))//5的个数
{
cnt5++;
x /= 5;
}
//补2或者5
while (cnt2 > cnt5 && m / 5)
{
cnt2--;
m /= 5;
n *= 5;
}
while (cnt2 < cnt5 && m / 2)
{
cnt5--;
m /= 2;
n *= 2;
}
int res = 1;
//补10
for (int i = 10; i <= 1e9; i*=10)
{
if (m <= i)
{
res =i/10;
break;
}
}
//倍数
res = m / res * res;
cout <<res*n << endl;
}
signed main()
{
int t;
cin >> t;
while (t--)
{
solve();
}
return 0;
}