fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define int long long
  4. #define ull unsigned ll
  5. #define ld long double
  6. #define pb push_back
  7. #define f first
  8. #define s second
  9. #define pq priority_queue
  10. #define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
  11. #define read_file freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
  12.  
  13. using namespace std;
  14.  
  15. // #include <ext/pb_ds/assoc_container.hpp>
  16. // #include <ext/pb_ds/tree_policy.hpp>
  17. // using namespace __gnu_pbds;
  18.  
  19. // template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
  20. // template<class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  21.  
  22. vector<int> v1;
  23. int val1, val2, mini;
  24. void rec(int sum1, int sum2, int i){
  25. if(i==v1.size()){
  26. if(max(sum1, sum2)<mini){
  27. mini=max(sum1, sum2);
  28. val1=sum1; val2=sum2;
  29. }
  30. return;
  31. }
  32. sum1*=v1[i];
  33. rec(sum1, sum2, i+1);
  34. sum1/=v1[i];
  35.  
  36. sum2*=v1[i];
  37. rec(sum1, sum2, i+1);
  38. sum2/=v1[i];
  39. }
  40.  
  41. void solve(){
  42. int x; cin>>x;
  43.  
  44. int a=1, b=1;
  45. for(int i=2; i*i<=x; i++){
  46. int pr=1;
  47. while(x%i==0){
  48. pr*=i;
  49. x/=i;
  50. }
  51. if(pr!=1) v1.pb(pr);
  52. }
  53. if(x) v1.pb(x);
  54. int prod=1; for(int i=0; i<v1.size(); i++) prod*=v1[i];
  55. val1=prod; val2=1; mini=prod;
  56.  
  57. rec(1, 1, 0);
  58. cout<<val1<<' '<<val2<<endl;
  59. }
  60.  
  61. int32_t main() {
  62. fast;
  63.  
  64. int t; t=1;
  65. while(t--){
  66. solve();
  67. }
  68. return 0;
  69. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
7550543 2961899