数论分块
通过打表找规律,发现x<sqrt(n),值各不相同
x>sqrt(n)时 递减
举例
n=20时
20 10 6 5 4 3 2 1
sqrt(20)=4
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int n, x, ans = 1;
scanf("%d%d", &n, &x);
if (x <= sqrt(n))
{
cout << x << "\n";
}
else
{
int k = sqrt(n);
int ans = k + n / ((int)sqrt(n) + 1) - n / x + 1;
cout << ans << "\n";
}
}
return 0;
}


京公网安备 11010502036488号