http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31329#problem/E
相当于把超出平均成绩总和的部分分配到N科成绩中去;
根据组合数学的知识知:C( n + p , p ) ;
n为科数,p为超出部分分数
#include<map>
#include<set>
#include<list>
#include<cmath>
#include<ctime>
#include<deque>
#include<stack>
#include<bitset>
#include<cstdio>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iomanip>
#include<numeric>
#include<sstream>
#include<utility>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std ;
int main()
{
int Case ;
int m , n , t , p , temp , N , T , P ;
long long ans ;
scanf( "%d" , &Case ) ;
while( Case-- )
{
scanf( "%d%d%d" , &N , &T , &P ) ;
n = T - N * P ;
if( n < 0 )
{
printf( "0\n" ) ;
}
else
{
m = n + N - 1 ;
n = m - n > n ? n : m - n ;
ans = 1 ;
for( int i = 1 ; i <= n ; ++i )
{
ans = ans * ( m - i + 1 ) / i ;
}
printf( "%lld\n" , ans ) ;
}
}
return 0 ;
}