缘由一道很简单的问题——因子问题-编程语言-CSDN问答
void 全因子组(_int64 n, _int64* a, int& x)
{//缘由https://ask.csdn.net/questions/7632111?spm=1005.2025.3001.5141_int64 c = 1, s = 0;bool p = ((n - n / 2 * 2) > 0);while (c <= (s = n / c)){if (!(n - n / c * c))a[x++] = c, a[x++] = s, std::cout << c << "\t" << s << "\t";//else; c += p ? 2 : 1;//对于奇数优化时间减半}
}_int64 a[100000]{}, n = 0; int m = 0, x = 0;std::cin >> n >> m;全因子组(n+1234567890123456789, a, x);std::sort(a + 1, a + x);std::cout << (x >= m ? a[m - 1] : -1) << std::endl;_int64 a[100000]{}, n = 0; int m = 24, x = 0;std::cin >> n >> m;全因子组(n + 1234567890, a, x); n = 0;if (m < x / 2) n += (m - 1) * 2;else n = x - ((m -= x / 2) > 0 ? m * 2 - 1 : 2);std::cout << (x >= m ? a[n] : -1) << std::endl;