Submission #19393

#TimeUsernameProblemLanguageResultExecution timeMemory
19393bshnetΣ (kriii4_P2)C++14
100 / 100
16 ms1720 KiB
#include <iostream>
#include <vector>

#define MOD (1000000007)

using namespace std;

int pow(int64_t a, int64_t x) {
	int64_t sq[64];
	int ans = 1;

	sq[0] = (a % MOD);
	for(int i = 1; i <= 64; ++i) {
		if(x & 0x01)
			ans = (ans * sq[i-1]) % MOD;

		x >>= 1;
		if(!x)
			break;

		sq[i] = (sq[i-1] * sq[i-1]) % MOD;
	}

	return ans;
}

int expect(vector<int> &ni, vector<int> &si) {
	int n = ni.size();
	int ans = 0;
	for(int i = 0; i < n; ++i) {
		int64_t e = ((int64_t)si[i] * pow(ni[i], MOD - 2)) % MOD;
		ans = (ans + e) % MOD;
	}
	return ans;
}

int main(void) {
	int M;
	cin >> M;

	vector<int> Ni(M), Si(M);
	for(int i = 0; i < M; ++i) {
		cin >> Ni[i] >> Si[i];
	}

	cout << expect(Ni, Si) << endl;

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