到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

请你帮小明计算一下,59084709587505是第几个幸运数字。

解题思路:

因为Java不支持数组元素的动态添加与删除,所以我这里使用集合来保存元素。我的解法比较规规矩矩,可能显得比较笨拙,但是是最容易理解的。我先往集合里加入3,5,7三个元素,然后对这几个元素分别乘以3,5,7,只要比7大便结束循环,然后把最小的数再加入到集合中,再重复以上操作,直到出现 59084709587505 。需要注意一点,这里数值比较大,我采用的是long类型。

代码示例:

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {long n = 59084709587505l;// 用集合来保存数据List<Long> list = new ArrayList();list.add((long) 3);list.add((long) 5);list.add((long) 7);for (int i = 4; i < 2000; i++) {long min = 0;long n1 = 0;long n2 = 0;long n3 = 0;// 集合里最后一个元素Long last = list.get(list.size() - 1);// 对集合里的数据进行遍历,分别乘以3,5,7,只要比最后一个元素大就结束循环// 取出三个数中最小的数,并添加到集合中for (int j = 0; j < list.size(); j++) {n1 = list.get(j) * 3;if (n1 > last)break;}for (int k = 0; k < list.size(); k++) {n2 = list.get(k) * 5;if (n2 > last)break;}for (int z = 0; z < list.size(); z++) {n3 = list.get(z) * 7;if (n3 > last)break;}if (n1 > n2)min = n2;elsemin = n1;if (min > n3)min = n3;list.add(min);if (min == n)System.out.println(i);}}}

算法题--第几个幸运数相关推荐

  1. leetcode算法题--矩阵中的幸运数

    原题链接:https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix/ class Solution {public:vector<in ...

  2. 一天一道算法题--6.15--卡特兰数

    感谢微信平台---一天一道算法题---每天多一点进步- problem: 12个高矮不同的人 排成两排 每排必须是从矮到高排列 而且第二行比对应的第一排的人高 问排列方式有多少种? analyse: ...

  3. 牛客网算法题 (一) 办公室路径条数解法 Shopee的办公室(二)

    办公室路径走法 题目描述 shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样 ...

  4. 2018年第九届省赛C/C++A组第4题——第几个幸运数

    标题:第几个幸运数 到x星球旅行的游客都被发给一个整数,作为游客编号. x星的国王有个怪癖,他只喜欢数字3,5和7. 国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品. 我们来看前1 ...

  5. 京东2017校园招聘Android研发工程师编程题(二):幸运数

    小明同学学习了不同的进制之后,拿起了一些数字做起了游戏.小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用.现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x) ...

  6. php判断一个数是否是回文数,每周一道算法题001:回文数

    题目: 找出大于10的最小的2进制,8进制,10进制都是回文数的最小的数.回文数指的是正读和反读都是一样的数,例如:33,10001,123454321... 思路: 先转换进制,然后统一处理成字符串 ...

  7. python【力扣LeetCode算法题库】9- 回文数

    回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: ...

  8. leetcode算法题--最接近的三数之和

    原题链接:https://leetcode-cn.com/problems/3sum-closest/ 排序+双指针 int threeSumClosest(vector<int>& ...

  9. C++经典算法题-洗扑克牌(乱数排列)

    24.Algorithm Gossip: 洗扑克牌(乱数排列) 说明 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1-N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已. 解法 ...

最新文章

  1. c#获取对象的唯一标识_在 Java 中利用 redis 实现分布式全局唯一标识服务
  2. python五十七:str与repr,类似于 java对象中的tostring()方法
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数
  4. 怎样cp文件夹时忽略指定的文件夹和文件
  5. redis aof日志持久化和key设计原则
  6. 开放一些常见功能的工具类代码
  7. Java—stream以及集合框架使用
  8. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)
  9. 7 vsphere 分配许可_vCenter server 5.5中添加ESXi5.5主机并分配许可密钥
  10. 第八届全国噪声与振动控制工程学术会议大会报告
  11. 吉他音阶训练入门教程——上集(认识音阶)
  12. 架设服务器虚拟主机教程,web服务器虚拟主机(服务器搭建虚拟主机教程)
  13. 工作了17年,2021年双11是我见过有史以来“撸腾讯云羊毛”最狠的一次,血赚
  14. Accidental override: The following declarations have the same JVM signature (getWindow()Landroid/vie
  15. win7中设置保护眼睛的绿豆沙色
  16. python画布组件_Python Tkinter 画布(Canvas)
  17. 计算机研究生怎么研究黑洞,麻省理工学院研究生的工作使黑洞的事件视野成为可能...
  18. Unity中Animation连续被调用时,Animation Event偶尔不触发
  19. 应届生年薪30万,把员工宠上天?测试员在快手工作究竟是什么样的体验?
  20. 跟着乔布斯上一堂管理课

热门文章

  1. 免费下载各种json包的网址
  2. Scala Trait 详解(实例)
  3. 华为数通笔记-MAC地址
  4. 车企们的第一辆车是什么样的
  5. c二级语言程序编程题,二级C语言编程题 汇总整理篇.doc
  6. 国密加密解密之vue-sm2使用
  7. 十几年经验的原华为海思工程师亲述ic验证如何转ic设计
  8. 总结恢复百度关键词排名的方法
  9. 潜入培训机构,顺出来一份价值 2.2W 的 Python 人工智能大纲
  10. Zigbee(E18-MS1-PCB)使用记录