Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const long long MAX = 1e18 + 7LL;
- typedef long long ll;
- typedef pair<ll,ll> pll;
- ll primes[] = {2,3 ,5, 7, 11, 13,17, 19, 23,29, 31, 37, 41, 43, 47, 53, 59};
- ll number;
- pll solve(int idx = 0 , ll val = 1, ll qnt = 1, int maxi = 70){
- if(val > number || val < 0) return make_pair(MAX,0);
- if(idx > 16) return make_pair(val, qnt);
- ll power = 1;
- pll ans = make_pair(MAX,0);
- for(int i = 0; i <= maxi; i++){
- if(val*power <= number){
- pll aux = solve(idx+1, val*power, qnt*(i+1), i);
- if(aux.second >= ans.second){
- if(aux.second == ans.second) ans.first = min(aux.first, ans.first);
- else ans.first = aux.first;
- ans.second = aux.second;
- }
- power *= primes[idx];
- }else break;
- }
- return ans;
- }
- int main(){
- int cases; cin >> cases;
- while(cases--){
- cin >> number;
- pll resp = solve();
- //if(resp == make_pair(MAX,0LL)) while(true){}
- cout << resp.first << " " << resp.second << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement