HDU-1058,Humble Numbers(丑数打表)

简介: HDU-1058,Humble Numbers(丑数打表)

Problem Description:


A number whose only prime factors are 2,3,5 or 7 is called a humble number. 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.


Write a program to find and print the nth element in this sequence


Input:

The input consists of one or more test cases. Each test case consists of one integer n with 1 <= n <= 5842. Input is terminated by a value of zero (0) for n.


Output:

For each test case, print one line saying "The nth humble number is number.". Depending on the value of n, the correct suffix "st", "nd", "rd", or "th" for the ordinal number nth has to be used like it is shown in the sample output.


Sample Input:


1


2


3


4


11


12


13


21


22


23


100


1000


5842


0


Sample Output:


The 1st humble number is 1.


The 2nd humble number is 2.


The 3rd humble number is 3.


The 4th humble number is 4.


The 11th humble number is 12.


The 12th humble number is 14.


The 13th humble number is 15.


The 21st humble number is 28.


The 22nd humble number is 30.


The 23rd humble number is 32.


The 100th humble number is 450.


The 1000th humble number is 385875.


The 5842nd humble number is 2000000000.


解题思路:


丑数是可以由2,3,5,7,因子组成的,应用丑数是2,3,5,7的倍数这一性质来做。从第一个丑数1开始,第二个丑数就是前面的丑数乘以2,3,5,7后得到的最小的那个值,就是2。


程序代码:


#include<bits/stdc++.h>
using namespace std;
long long a[5843];
void check()
{
  int num=1;
  int p2,p3,p5,p7;
  p2=p3=p5=p7=1;
  a[1]=1;
  while(num<5843)
  {
    a[++num]=min(min(2*a[p2],3*a[p3]),min(5*a[p5],7*a[p7]));
    if(a[num]==2*a[p2])
      p2++;
    if(a[num]==3*a[p3])
      p3++;
    if(a[num]==5*a[p5])
      p5++;
    if(a[num]==7*a[p7])
      p7++;
  }
}
int main()
{
  check();
  int n;
  while(~scanf("%d",&n)&&n)
  {
    if(n%10==1&&n%100!=11)
      printf("The %dst humble number is %lld.\n",n,a[n]);
    else if(n%10==2&&n%100!=12)
      printf("The %dnd humble number is %lld.\n",n,a[n]);
    else if(n%10==3&&n%100!=13)
      printf("The %drd humble number is %lld.\n",n,a[n]);
    else
      printf("The %dth humble number is %lld.\n",n,a[n]);
  }
  return 0;
}



相关文章
|
计算机视觉
数据集学习笔记(三):COCO创建dataloader用于训练
如何使用COCO数据集创建dataloader进行训练,包括安装环境、加载数据集代码、定义数据转换、创建数据集对象以及创建dataloader。
287 5
|
6月前
|
UED
网络性能指标
本内容详细介绍了网络性能中的三个关键指标:时延、抖动和丢包率。时延指数据传输所需时间,影响实时性;抖动表示延迟变化程度,反映网络稳定性;丢包率衡量数据丢失比例,评估传输可靠性。这些指标对在线游戏、视频会议等实时应用至关重要,高时延、大抖动或高丢包率会显著降低用户体验。通过类比快递寄送和语音通话,清晰解释了各指标的定义及应用场景。
871 8
|
2月前
|
算法 API 数据安全/隐私保护
拼多多 item_search_best 接口深度分析及 Python 实现
拼多多开放平台 item_search_best 接口是用于精准商品搜索的核心接口,按商品销量、价格、评分及商家资质等多维度排序,适用于爆款挖掘、竞品分析与市场监控。本文详解其接口特性、参数配置、签名生成逻辑、返回结构及 Python 实现方案。
|
3月前
|
运维 Kubernetes Cloud Native
云原生运维也能很稳:Kubernetes 运维避坑指南
云原生运维也能很稳:Kubernetes 运维避坑指南
106 0
|
算法
【图像】图像增强-降噪锐化
【图像】图像增强-降噪锐化
150 1
|
机器学习/深度学习 人工智能 自然语言处理
人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命
AI正深刻影响UI设计和视频剪辑行业。在UI设计中,AI提供智能辅助设计,跨模态生成和个性化定制,帮助设计师提高效率,创新设计。AI分析趋势和用户行为,生成设计方案,支持语音和文本输入,增强设计的多样性和个性化体验。在视频剪辑领域,AI实现智能素材管理,自动化剪辑处理和特效生成,提升剪辑质量和速度。通过Adobe国际认证,设计师和剪辑师可以系统学习并掌握这些AI技术,提升职业竞争力,共同开创行业新未来。
|
分布式计算 DataWorks Java
DataWorks产品使用合集之怎么选择Doris或StarRocks作为DataWorks的OLAP解决方案
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
JavaScript Java 测试技术
基于SpringBoot+Vue的健身房管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的健身房管理系统的设计与实现(源码+lw+部署文档+讲解等)
191 2
基于SpringBoot+Vue的健身房管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
机器学习/深度学习 数据采集 运维
探索机器学习在金融风控中的应用与挑战
本文深入探讨了机器学习技术在金融风险控制领域的应用及其所面临的挑战。通过分析当前金融市场的风险特点,结合机器学习算法的优势与局限,文章揭示了机器学习如何助力金融机构提高风险识别的精准度和决策效率。同时,讨论了实施过程中的数据隐私、模型透明度和监管合规等关键问题,并提出了相应的解决策略。最后,文章展望了机器学习技术未来在金融风控领域的发展趋势,为金融科技从业者提供了实践指导和思考方向。
336 0
|
数据可视化 搜索推荐 vr&ar
增强现实(AR)技术在教育领域的应用研究
增强现实(AR)技术在教育领域的应用研究
594 0