HDU 4504
#include <cstdio> #include <cstring> using std::memset; int a,b,t; //n!/(a!*b!*c!) long long cal(int n, int a,int b,int c) { long long ans= 1; for(int i = a+1; i <= n; i++) { ans *= i; } for(int i = 1; i <= b; i++) { ans /= i; } for(int i = 1; i <= c; i++) { ans /= i; } return ans; } int main() { while(scanf("%d%d%d", &a, &b, &t)!=EOF) { int dif = b - a + t/30; int MAX = t/15 - t/30; long long ans = 0; for(int i = 0 ; i <= MAX; i++) { for(int j = 0 ; j <= MAX; j++) { for(int k = 0 ; k <= MAX; k++) { if(i + j + k == MAX && i*1 + j*2 + k*3 > dif) { ans += cal(MAX, i, j, k); } } } } printf("%I64d\n", ans); } }