数论分块
通过打表找规律,发现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; }