这道题就是小思维题
可以把情况分为两类,b == 0,b >= 1
当 b == 0, 那么就会出现无法全排列的情况,即最后有两个以上的数在末尾
其他情况均可排列
代码
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
void solve()
{
long long n, b, c;
long long ans = -1;
cin >> n >> b >> c;
if (b >= 1)
{
if (n <= c)
{
ans = n;
}
else
{
ans = c;
n -= c;
ans += n - (n + b - 1) / b;
}
}
else
{
if (n <= c)
{
ans = n;
}
if (c == n - 1)
{
ans = c;
}
if (c == n - 2)
{
ans = n - 1;
}
}
printf("%lld\n", ans);
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t;
cin >> t;
while (t -- )
{
solve();
}
}