![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学知识
·
执著者√
!
展开
-
第 k 个除数(试数法,约数)
给定两个整数 n 和 k,请你找到并输出能够整除 n 的第 k 小的正整数。 输入格式 一行,两个整数 n 和 k。 输出格式 输出能够整除 n 的第 k 小的整数。 如果不存在,则输出 −1。 数据范围 1≤n≤1015, 1≤k≤109。 输入样例1: 4 2 输出样例1: 2 输入样例2: 5 3 输出样例2: -1 算法: x能整除n,那么x一定是n的约数,因此可以先把n的所有约数先求出来; 这里求约数的时候,用i * i <= n 比 i <= n / i 快~ C++代码: #inc原创 2021-08-05 14:49:51 · 140 阅读 · 0 评论 -
求解斐波那契数列的若干方法
算法1 递归。 递归计算的节点个数是 O(2^n) 的级别的,存在大量重复计算。 时间复杂度是O(2^n),一秒内大约能算到第三四十项。 C++ 代码 const int MOD = 1000000007; int f(int n) { if (n <= 1) return 1; return (f(n - 1) + f(n - 2)) % MOD; } 算法2 记忆化搜索。 开一个大数组记录中间结果,如果一个状态被计算过,则直接查表,否则再递归计算。 总共有 n 个状态,计算每个.原创 2021-07-04 14:25:01 · 60 阅读 · 0 评论