範例程式碼 uva12546

//uva12546
#include <iostream>
using namespace std;

int main() {
	int t, c, k = 0, factor[15], power[15];
	long long n, ans, num[15], prev[15];
	const long long mod = 1000000007;

	cin >> t;
	while (k < t) {
		++k;
		cin >> c;
		for (int i = 0; i < c; ++i)
			cin >> factor[i] >> power[i];
		
		n = 1;
		for (int i = 0; i < c; ++i) {
			num[i] = 1;
			prev[i] = 1;
			for (int j = 0; j < power[i]; ++j) {
				prev[i] = (prev[i] * factor[i]) % mod;
				num[i] = (num[i] + prev[i]) % mod;
			}
			num[i] = (num[i] + (power[i] * prev[i]) % mod) % mod;
			n = (n * prev[i]) % mod;
		}

		ans = 1;
		for (int i = 0; i < c; ++i)
			ans = (ans * num[i]) % mod;
		ans = (ans + n) % mod;
		cout << "Case " << k << ": " << ans << endl;
	}


	return 0;
}