英文描述:Design an algorithm to find the kth number such that the only prime factors are 3, 5, and 7


思路:质因数只能为3,5,7,设这个数为val,则val = (3^i)(5^j)(7^n) (i,j,n>=0),显然第1个数为1,第2个为1*3,第3个为1*5,第4个为1*7,第5个为3*3,第6个为3*5,第7个为3*7...

如果将钱k-1个数组成一个链表r,可以看出,第k个数为3或5或7乘以前k-1个数中的某一个,得到一个还未加入r的最小的数。为了防止过多的循环,我们应对这个最小的数保持记录。

代码:

 #include<queue>

 int findnum(int k)
{
if (k <= )
return ;
int val =;
queue<int> Q3; Q3.push();
queue<int> Q5; Q5.push();
queue<int> Q7; Q7.push(); for (k--; k > ; k--)
{
val = findmin(Q3.front(), Q5.front(), Q7.front());
if (val == Q7.front())
Q7.pop();
else
{
if (val == Q5.front())
Q5.pop();
else
{
Q3.pop();
Q3.push(val * );
}
Q5.push(val * );
}
Q7.push(val*);
} return val;
}
int findmin(int a, int b, int c)
{
int result = ;
if (a < b)
result = a;
else result = b;
if (result > c)
result = c;
return result;
}

我使用了C++ STL模板queue(队列,先入先出),Q3,Q5,Q7分别用来记录上一次最小的数乘以3,5,7的结果,以便以后使用。最小的数一旦使用后,立即出队。

计算第k个质因数只能为3,5,7的数的更多相关文章

  1. 【算法】php计算数字k在一段数字范围出现的次数

    计算数字k在0到n中的出现的次数,k可能是[0~9]内的一个值. 例如数字n=25,k=1,在1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  2. 计算n^k的开头三位和末尾三位(fmod(double x,double y)函数的引入)

    C 库函数 double fmod(double x, double y) 返回 x 除以 y 的余数. 所以fmod(x,1)得到的就是小数部分的值(如fmod(3.35,1)==0.35) htt ...

  3. 计算第K个素数

    暂时没有时间整理,先放在这里: http://www.quora.com/Prime-Numbers/What-are-good-ways-to-find-nth-prime-number-in-th ...

  4. Gym - 102346D Denouncing Mafia 取k叶子节点使叶子到根覆盖节点数最大

    给你一棵树 你可以取K条链 一条链为根到叶子的路径 问你K条链最多覆盖树上多少个节点 贪心的做 肯定是每次取最长链 但是取完最长链 一颗树就会变为若干个森林 我们要维护当前所有森林里的最长链 ans数 ...

  5. OpenJudge计算概论-能被3,5,7整除的数

    /*===================================== 能被3,5,7整除的数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数,判断它能否被3,5, ...

  6. while循环计算1-100和,1-100内偶数/奇数/被整除的数的和

    文章地址 https://www.cnblogs.com/sandraryan/ <!DOCTYPE html> <html lang="en"> < ...

  7. [CF403D]Beautiful Pairs of Numbers

    题意:给定$n,k$,对于整数对序列$\left(a_1,b_1\right),\cdots,\left(a_k,b_k\right)$,如果$1\leq a_1\leq b_1\lt a_2\leq ...

  8. bzoj5093:图的价值(第二类斯特林数+NTT)

    传送门 首先,题目所求为\[n\times 2^{C_{n-1}^2}\sum_{i=0}^{n-1}C_{n-1}^ii^k\] 即对于每个点\(i\),枚举它的度数,然后计算方案.因为有\(n\) ...

  9. 【转】Alchemy的使用和多项式批量计算的优化

    原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332158.html ================================== ...

随机推荐

  1. Unity本身制作keystore

    网上有不少利用jdk生成keystore的介绍.本身复杂不容易理解.作为一个Unity游戏开发者,制作keystore不需要这么麻烦.应为Unity本身就自带了制作keystore的功能.下面介绍制作 ...

  2. 马哥教育视频笔记:01(Linux常用命令)

    1.查看缓存中使用的命令和命令路径 [wskwskwsk@localhost /]$ hash 命中 命令 /usr/bin/printenv /usr/bin/ls /usr/bin/clear 2 ...

  3. Master page and jquery

    1.download latest jqury http://jquery.com/download/ 2.download latest jquery.ui, Theme select " ...

  4. [课程设计]Scrum 2.7 多鱼点餐系统开发进度(下单一览页面-菜式添加功能的继续实现)

    Scrum 2.7 多鱼点餐系统开发进度  (下单一览页面-菜式添加功能的继续实现) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团 ...

  5. Ajax实现原理详解

    Ajax:Asynchronous javascript and xml,实现了客户端与服务器进行数据交流过程.使用技术的好处是:不用页面刷新,并且在等待页面传输数据的同时可以进行其他操作. 这就是异 ...

  6. 【前端】互联网公司2014前端笔试面试题JavaScript篇(待续)

    // 网上找的题目,自己做了下 /**************************** *1. 用js实现随机选取10–100之间的10个数字,存入一个数组,并排序 *************** ...

  7. 【iOS】我的Objective-C学习笔记

    1.代码中增加标记 #pragma mark - #pragma mark 2.点语法 Person *p = [Person new]; // 点语法的本质还是方法调用 p.age = 10; // ...

  8. hadoop2.0初识1.0

    1.给普通用户设置sudo权限 编辑:[root@life-hadoop /]# nano /etc/sudoers 在文件头部加入:yanglin ALL=(root)NOPASSWD:ALL 保存 ...

  9. JavaIO总结

    Java IO流分为字节流和字符流 下面首先介绍一下字节流 /** * 字节流测试 * @author hc * */ public class Test { public static void m ...

  10. alu features menu

    可以把所有的custom menu和menu link移植到新的环境下,并且增加新的menu link不会吧module变成overridden, 只需到时recreate生成一个新的module包, ...