注意中间结果会超int【这是个坑啊
完整代码:
/*0.015s*/
#include<bits/stdc++.h>
using namespace std;
long long c(long long n, long long r)
{
if (r < 0) return 0;
r = min(r, n - r);
long long ans = 1;
for (long long i = 0; i < r; ++i)
ans = ans * (n - i) / (i + 1);///中间运算结果会超int
return ans;
}
int main()
{
int t;
long long n, r, p;
scanf("%d", &t);
while (t--)
{
scanf("%lld%lld%lld", &n, &r, &p);
r -= n * p;
printf("%lld\n", c(n + r - 1, r));
}
return 0;
}