60 pts求调
查看原帖
60 pts求调
1112264
YZZCDS楼主2025/7/19 15:56
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

inline ll read() {
	ll f = 1, x = 0;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + ch - '0';
		ch = getchar();
	}
	return x * f;
}

inline void write(ll x) {
	if (x < 0) x = -x, putchar('-');
	if (x > 9) write(x/10);
	putchar('0'+x%10);
}

inline void writeln(ll x) {
	write(x);
	putchar('\n');
}

ll fastPow(ll a, ll n, ll mod) {
	ll ans = 1;
	a %= mod;
	while (n) {
		if (n & 1) ans = (ans * a) % mod;
		a = (a * a) % mod;
		n >>= 1;
	}
	return ans;
}

ll get_inv(ll a, ll mod) {
	return fastPow(a, mod-2, mod);
}

ll n, a[15], m[15], M = 1, ans;

int main() {
	n = read();
	for (int i = 1; i <= n; i ++) a[i] = read();
	for (int i = 1; i <= n; i ++) m[i] = read(), M *= m[i], a[i] = (a[i] % m[i] + m[i]) % m[i];
	for (int i = 1; i <= n; i ++) {
		ans += a[i] * (M / m[i]) * get_inv(M/m[i], m[i]) % M;
	}
	ans %= M;
	writeln(ans);
	return 0;
}
2025/7/19 15:56
加载中...