#include <iostream>
#define int long long
using namespace std;
signed main() {
int n, a, b;
cin >> n;
if(n <= 2)cout << "1 1";
else if(n == 4 || n == 3)cout << "3 1";
else{
int first = 2, minn = 999999999;
for(int i = 3; i <= 13; i++){
first *= i;
int now = first - 1;
int bb = n / now;
//cout << i << ' ' << bb <<" " << n - now * bb << " " << now * (bb + 1) - n << " ";
if((n - now * bb) < minn && bb != 2 && bb != 0){
a = i;
b = bb;
minn = n - now * bb;
}
if((now * (bb + 1) - n) < minn && bb != 1 && bb != 0){
a = i;
b = bb + 1;
minn = now * (bb + 1) - n;
}
//cout << i << ' ' << minn << endl;
}
cout << a << ' ' << b;
}
}
// 64 位输出请用 printf("%lld")
直接模拟做, 因为12!就比1e9大了,
对于每一个!考虑两种情况的b:第一个是不足n, 第二个是超过n,
注意第二种情况的b!=2判断不要写错了
(在这里想了很久的人)

京公网安备 11010502036488号