丑数
来源:互联网 发布:淘宝的违禁词 编辑:程序博客网 时间:2024/05/10 18:56
我们把只包含因子2、3、5的数称为丑数。求按从大到小的顺序的第1500个丑数。例如6、8是丑数,但14不是,因为他包含因子7.习惯上我们把1当做第一个丑数。
根据丑数的定义,丑数应该是另一个丑数乘以2、3、或者5的结果。因此我们可以创建一个数组,
里面的数乘以2、3、5的结果(1除外)。因此我们可以创建一个数组,里面的数字是
排好序的丑数,每一个丑数都是前面的丑数乘以2、3、5得到的。
#include <iostream>using namespace std;int Min(int number1,int number2,int number3){ int min = (number1 < number2) ? number1 : number2; min = (min < number3) ? min : number3; return min;}int GetUglyNumber_Soution2(int index){ if(index <= 0) return 0; int *pUglyNumbers = new int[index]; pUglyNumbers[0] = 1; int nextUglyNumber = 1; int *pMultiply2 = pUglyNumbers; int *pMultiply3 = pUglyNumbers; int *pMultiply5 = pUglyNumbers; while(nextUglyNumber < index) { int min = Min(*pMultiply2,*pMultiply3,*pMultiply5); pUglyNumbers[nextUglyNumber] = min; while(*pMultiply2*2 <= pUglyNumbers[nextUglyNumber]) ++pMultiply2; while(*pMultiply3*3 <= pUglyNumbers[nextUglyNumber]) ++pMultiply3; while(*pMultiply5*5 <= pUglyNumbers[nextUglyNumber]) ++pMultiply5; ++nextUglyNumber; } int ugly = pUglyNumbers[index-1]; delete[] pUglyNumbers; return ugly;}int main(){ cout<<" = "<<GetUglyNumber_Soution2(2)<<endl; return 0;}
阅读全文
0 0
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 丑数
- 解读The Python Tutorial(五)
- c++读取文件夹所有文件路径
- Python基础爬虫之百度翻译
- s获取网页屏幕可见区域高度
- MySQL之——表数据文件损坏导致数据库无法启动
- 丑数
- RecyclerView 使用说明书
- Error while executing: am startservice ***/com.android.tools.fd.runtime.InstantRunS
- dbgrideh自适应列宽
- cad导出jpg格式什么像素最清晰
- 请解释什么是MVC开发模式?
- finereport 使用超级链接并传递参数问题分析
- PAT 1091. Acute Stroke (30) BFS
- 设置UIButton中图片与文字居左显示,并且设置图片与文字之间的间距