Codefights challenge 丑数

2015-03-26 11:49:09

无意间看到的.. codefights上的一道challenge...

  题意:定义仅能被2,3,5,7整除的数定义为丑数,让你写一个函数快速求出第n个丑数。(n<=5842,第5842个丑数刚好不超过int范围)

  The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.

  (1)经典写法是:开4个标记下标的变量a2,a3,a5,a7,初始化均为0。并且开一个数组来保存丑数,初始化:h[5843] = {1}

      然后逐渐加入丑数,当前加入的数为min(h[a2]*2 , h[a3]*3 , h[a5]*5 , h[a7]*7),假设当前加入h[a5],那么a5++。(其他类似)

      注意判重。易证这种贪心方法是正确的。

1 int humble(int n) {
2       int i,j,v[5843]={1},c,a[4]={0},k[]={2,3,5,7};
3     for(i=1;i<n;){
4         for(j=0,c=2e9;j<4;j++)c=std::min(c,v[a[j]]*k[j]);
5         if(v[i-1]!=c)v[i++]=c;
6         for(j=0;j<4;j++)if(c==v[a[j]]*k[j])a[j]++;
7     }
8     return v[n-1];
9 }

 

  (2)由于要求的丑数个数并不大,我们可以用一种类似累乘的方法,先构造2^1,2^2...2^k,且2^k为小于int的最大值,然后再加入3,并用3乘上

      所有已有的值... 最后将构造出来的数列排序即可... 看到别人用Python写的无比精简... orz...

1 def humble(n):
2   f = [1]
3   for p in 2, 3, 5, 7:
4     for x in f:
5       f += [x * p] * (x < 9e9)
6   
7   f.sort()
8   
9   return f[n - 1]

 

转载于:https://www.cnblogs.com/naturepengchen/articles/4369901.html

JavaScript编程解题实践:CodeSignal与CodeFights解决方案 JavaScript是一种轻量级的编程语言,广泛应用于网页开发中,提供动态交互式网页的能力。它由ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成,旨在创造一种快速、小巧、与宿主环境无关的脚本语言。本章讲解了JavaScript代码性能优化的多个方面,包括数据结构实现、字符串处理、高级编程技巧以及异步编程技术。理解和运用这些技术,可以帮助开发者编写出更高效、更优质的JavaScript代码。未来,随着JavaScript的不断进化,性能优化也会成为开发者必须掌握的重要技能之一。 阅读详情

相关推荐

CodeFights:Code Fights练习

打架 Code Fights练习

CodeFights Python 编程实训

1.螺旋矩阵 一个n*n的矩阵,其元素大小是从1-n*n,矩阵右下角是1,其数字顺序呈逆时针方向。 例: 1 n=3 createSpiralMatrix(n) = [[5, 4, 3], [6, 9, 2], [7, 8, 1]] 代码如下: def createSpiralMat

机器人视觉感知 889

Algorithm-CodeFights.zip

Algorithm-CodeFights.zip,算法,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

推荐几个对编程有帮助的游戏

文章目录一.极客战记二.CheckIo三.LightBot四.CodeFights(代码战 )五.代码打猎(Code Hunt)六.康丁游戏 (CoinGame)七.RoboCode八.Hack Game九.代码坦克十.大型多人在线开放策略游戏十一.Nazo Game 一.极客战记    参考网址:https://codecombat.com/    网易《极客战记》是一款在线的寓教于乐的编程教育...

William_fang的博客 4703

codefights:CodeFights解决方案

CodeFights解决方案

Codefights:Codefights网站面临的挑战

这是Codefights.com针对编程挑战提供的一组解决方案。 与往常一样,文件名与网站上挑战的名称相对应。

有哪些好的刷题网站?2017年最受欢迎的编程挑战网站

程序猿(ID:imkuqin) 猿妹编译 编译自:https://medium.freecodecamp.org/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f 编程几乎已经成为了人类所知每个行业的必要组成部分,如今有越来越多的人开始了他们的编程之旅。 如果你正在

程序猿 1万+

codefight-cms-开源

它是在codeigniter php框架之上构建的php内容管理系统。

codeFight-Python编程训练(2)

1.计算整数列表的最小公倍数 例如,给定列表d=[2,3,4,5,6],函数的输出为leastCommonDenominator() = 60 用到了python的fraction模块,代码示例: from fractions import gcd def leastCommonDenominator(denominators): return reduce

机器人视觉感知 1373

医学图像处理实战:ABIDE数据集获取与预处理全攻略

本文详细介绍了ABIDE数据集的获取与预处理全流程,涵盖官方脚本下载、Nilearn库高效下载、数据预处理与格式转换等关键步骤。ABIDE数据集作为自闭症脑成像研究的重要资源,提供了标准化的功能磁共振成像数据,适合机器学习模型训练。文章还提供了常见问题排查与优化建议,帮助开发者高效处理医学图像数据。

weixin_29069131的博客 255

保姆级教程:Win10/Win11系统下ArcGIS 10.2中文版完整安装与破解(含License Manager启动失败解决方案)

本文提供Windows 10/11系统下ArcGIS 10.2中文版的完整安装与破解教程,重点解决License Manager启动失败等常见问题。从安装准备、破解文件处理到最终配置验证,详细指导用户完成每一步操作,确保软件正常运行。特别针对主机名修改、端口占用等疑难问题提供专业解决方案。

weixin_29596051的博客 546

推荐 7 个 yyds 的开源项目

华为天才少年又出新作,自制了一个钢铁侠的机械臂,而且已经开源。本文就盘点最近比较火的开源项目,包括:钢铁侠的机械臂秒杀系统设计与实现个人独立博客系统适用于 Android 电视和电视盒的应...

公众号:逛逛GitHub 7306

新手必看:瑞萨MCU选型时,QFP、QFN、BGA这些封装到底该怎么选?(附选型避坑指南)

本文详细解析了瑞萨MCU选型中QFP、QFN、BGA等封装的特点与适用场景,提供实战避坑指南。通过对比封装的空间占用、散热能力、焊接难度等核心维度,帮助工程师根据具体需求选择最合适的芯片封装,避免因选型不当导致的高成本与生产问题。

weixin_26965807的博客 421

codefights_Different_Squares

Given a rectangular matrix containing only digits, calculate the number of different 2 × 2 squares in it.ExampleFormatrix = [[1, 2, 1], [2, 2, 2], [2, 2, 2], [1, 2, 3], ...

hhhhhyyyyy8的博客 241

AD23导出Gerber文件保姆级教程:从PCB到嘉立创下单,一步不落(附常见问题排查)

本文提供AD23导出Gerber文件的详细教程,涵盖从PCB设计检查到嘉立创下单的全流程,特别针对两层板设计场景,帮助新手工程师避免常见错误。内容包括Gerber文件生成步骤、钻孔文件设置、文件检查工具推荐以及嘉立创下单实操指南,确保PCB打样顺利。

weixin_30924239的博客 440

Perplexity AI 高效使用培训手册

Perplexity AI 是一款革命性的 AI 搜索引擎,提供免费版和专业版两种选择。免费版支持基础搜索、每日3次Pro搜索、3个文件上传和初步深度研究功能;Pro版则解锁无限次Pro搜索、无限制文件上传、AI图像生成等高级功能,适合专业用户深度研究。该工具能整合网络信息、分析本地文档、生成创意内容,并提供知识库管理功能,显著提升信息检索和内容创作效率。用户可根据需求选择合适版本,免费版已能满足日常使用,而Pro版则更适合专业场景。

conquer_qgw的博客 1206

codefights_almostIncerasingSequence

题目:Given a sequence of integers as an array, determine whether it is possible to obtain a strictly increasing sequence by removing no more than one element from the array.ExampleFor sequence = [1, 3, ...

hhhhhyyyyy8的博客 537

Avalonia v11实战:手把手教你从零创建第一个跨平台桌面App(含设计器不显示的解决方案)

本文详细介绍了如何使用Avalonia v11从零开始创建跨平台桌面应用,包括环境准备、项目创建、界面设计及常见问题解决方案。特别针对设计器不显示等常见问题提供了实用解决方法,帮助.NET开发者快速掌握这一强大的UI框架,实现Windows、macOS和Linux多平台应用开发。

weixin_30417487的博客 164

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 405

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

OpenClaw 2026.3.13 踩坑实录:飞书HTTP协议降级Bug与多版本回归问题汇总

摘要:OpenClaw v2026.3.13存在多个严重回归问题,包括飞书API调用协议意外降级为HTTP导致连接失败(#46100)、本地Gateway诊断矛盾(#45504)及设备配对CLI命令失效等。该版本发布流程本身也存在异常,被迫以v2026.3.13-1标签重新发布。建议飞书用户回退至v2026.3.8稳定版,其他用户谨慎升级。本文详细记录了各Bug现象、影响范围及临时解决方案,并梳理了飞书通道的"多版本回归史",指出其根源在于架构变迁和测试覆盖不足。最后提供了包含配置备份、

Maynor的博客 869

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 234

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 426

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205
上一篇: POJ--2208(欧拉四面体公式)
下一篇: USACO 4.3 Buy Low, Buy Lower (DP,高精度,(离散化))
dingdi3021
博客等级 码龄11年 1粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值