Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <vector>
- #include <queue>
- #include <algorithm>
- #include <string>
- #include <stack>
- #include <set>
- #include <map>
- #define pii pair <int, int>
- #define pb(x) push_back(x)
- using namespace std;
- using ll = long long;
- using ld = long double;
- using db = double;
- void cv(vector <int> &v) {
- for (auto x : v) cout << x << ' ';
- cout << "\n";
- }
- void cvl(vector <ll> &v) {
- for (auto x : v) cout << x << ' ';
- cout << "\n";
- }
- void cvv(vector <vector <int> > &v) {
- for (auto x : v) cv(x);
- cout << "\n";
- }
- void cvb(vector <bool> v) {
- for (bool x : v) cout << x << ' ';
- cout << "\n";
- }
- void cvs(vector <string> v) {
- for (auto a : v) {
- cout << a << "\n";
- }
- }
- void cvp(vector <pii> a) {
- for (auto p : a) {
- cout << p.first << ' ' << p.second << "\n";
- }
- cout << "\n";
- }
- ll f(ll A) {
- ll to2 = log2(A) + 2;
- ll to3 = log(A) / log(3) + 2;
- ll to5 = log(A) / log(5) + 2;
- ll best = pow(10, 18);
- for (int a = 0; a < to2; ++a) {
- int L3 = -1, R3 = to3, b;
- while (L3 + 1 < R3) {
- b = (L3 + R3) / 2;
- }
- //for (int b = 0; b < to3; ++b) {
- //ll ch = pow(2, a) * pow(3, b);
- /*if (ch >= A) {
- best = min(ch, best);
- continue;
- }*/
- int L = -1, R = to5, c;
- while (L + 1 < R) {
- c = (L + R) / 2;
- ll now = pow(2, a) * pow(3, b) * pow(5, c);
- if (now < A) {
- L = c;
- } else {
- R = c;
- }
- }
- //for (int c = 0; c < to5; ++c) {
- ll res = pow(2, a) * pow(3, b) * pow(5, R);
- best = min(best, res);
- //}
- }//
- }
- return best;
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- int n;
- cin >> n;
- vector <ll> a(n);
- for (ll &i: a) cin >> i;
- for (int i = 0; i < n; ++i) {
- cout << f(a[i]) << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement