#4648. M函数

M函数

题目描述

对于两个给定的正整数 X,YX, Y,定义 M(X,Y)M(X,Y) 为:XXYY 两者位数的较大值。例如 M(120,5)=3M(120, 5)=3,因为 12012033 位数,5511 位数。

任何正整数 NN 都可以分解为两个正整数的乘积:N=X×YN = X \times Y。我们把这样的 (X,Y)(X,Y) 称为 NN 的一对因子对(注意 XXYY 可能相等)。现在给定整数 NN,请你求出 NN 所有可能的因子对中,M(X,Y)M(X, Y) 的最小值。

输入格式

一行,一个正整数 NN

输出格式

一行,一个整数,表示所有因子对中 M(X,Y)M(X, Y) 的最小值。

样例

10000
3
100000007
9
9876543210
6

样例解释

  • 样例 1110000=100×10010000 = 100 \times 100,此时 XXYY 都是 33 位数,M=3M=3,且无法得到更小的 MM
  • 样例 22100000007100000007 自身是素数,因子对只有 (1,100000007)(1, 100000007),位数分别为 1199,因此 M=9M=9
  • 样例 33:可通过合适的因子对使 MM 达到 66,例如 9876543210=99990×987699876543210 = 99990 \times 98769 或其它,最终最小值为 66

数据范围与提示

  • 1N10101 \le N \le 10^{10}