Submission #18998

#TimeUsernameProblemLanguageResultExecution timeMemory
18998kriii제비 (kriii4_W)C++14
6 / 100
21 ms9052 KiB
#include <stdio.h>

const long long mod = 1000000007;

long long pow(long long a, long long p)
{
	long long r = 1;
	while (p){
		if (p & 1) r = r * a % mod;
		a = a * a % mod;
		p /= 2;
	}
	return r;
}

long long inv(long long a)
{
	return pow(a,mod-2);
}

long long D[1010][1010];

int main()
{
	int T; scanf ("%d",&T); while (T--){
		long long r,g,b,k;
		scanf ("%lld %lld %lld %lld",&r,&g,&b,&k);

		static int first = 0;
		if (!first){
			first = 1;

			for (int j=1;j<=1000;j++){
				D[0][j] = j * (1 + g * inv(b) % mod) % mod;
			}

			for (int i=1;i<=1000;i++){
				long long v = inv(i+b);
				for (int j=1;j<=1000;j++){
					long long s = (i * D[i-1][j] + b * D[i][j-1] + i + g + b) % mod;
					D[i][j] = s * v % mod;
				}
			}
		}

		printf ("%lld\n",D[r][k]);
	}

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...