// UVa 10717 - Mint #include <iostream> #include <climits> #include <limits> using namespace std; #define ll unsigned long long const ll oo = ULONG_MAX; ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b); } ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } int main() { ll n, t, x[50]; ll lc[50][50]; while ((cin >> n >> t) && (n || t)) { for (ll i = 0; i < n; i++) cin >> x[i]; ll m = 0, l[230301]; for (ll a = 0; a < n; a++) for (ll b = a + 1; b < n; b++) lc[a][b] = lcm(x[a], x[b]); for (ll a = 0; a < n; a++) for (ll b = a + 1; b < n; b++) for (ll c = b + 1; c < n; c++) for (ll d = c + 1; d < n; d++) { l[m] = lcm(lc[a][b], lc[c][d]); m++; } for (ll i = 0; i < t; i++) { ll h; cin >> h; ll s1 = oo, s2 = oo; for (ll j = 0; j < m; j++) { //cout << "D:" << l[j] << endl; ll d1 = h % l[j]; ll d2 = (l[j] - d1) % l[j]; if (d1 < s1) s1 = d1; if (d2 < s2) s2 = d2; } cout << h - s1 << " " << h + s2 << endl; } } return 0; }
Thursday, May 14, 2015
UVa 10717 - Mint
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment