题目:https://codeforces.com/problemset/problem/1360/D
题意:
两个整数n,k。求找出n能由x个 i()构成,求i的最小值。
题解:
我们只需要遍历出n能由和相乘,这里取最大为sqrt(n)。
再判断可以出现的条件:即当存在,可取,当 存在可取。
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, k;
cin >> n >> k;
int ans = n;
for (int i = 1; i <= sqrt(n); i++)
{
if (n % i == 0)
{
if (i <= k)
ans = min(ans, n / i);
if (n / i <= k)
ans = min(ans, i);
}
}
cout << ans << endl;
}
}