华为机试—寻找丑数 && 九度OJ 1214

来源:互联网 发布:苏州纽奥德软件靠谱吗 编辑:程序博客网 时间:2024/05/17 05:13

题目1214:丑数

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:1733

解决:771

题目描述:

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。
习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

输入:

输入包括一个整数N(1<=N<=1500)。

输出:

可能有多组测试数据,对于每组数据,
输出第N个丑数。

样例输入:
3
样例输出:
3
#include<iostream>#include<string.h>#include<stdio.h>int main(int argc, char *argv[]){    int a[1501];    memset(a,0,sizeof(a));    a[1]=1;    a[2]=2;    a[3]=3;    int i=4;    int max=a[3];    int max1,max2,max3;    int N;    while(~scanf("%d",&N)){        if(a[N]!=0)            printf("%d\n",a[N]);        else{            for(;i<1501;++i)            {                for(int j=1;j<i;++j)                {                    if(a[j]*2>max){                        max1=a[j]*2;                        break;                    }                }                for(int j=1;j<i;++j)                {                    if(a[j]*3>max){                        max2=a[j]*3;                        break;                    }                }                for(int j=1;j<i;++j)                {                    if(a[j]*5>max){                        max3=a[j]*5;                        break;                    }                }                if(max1<max2)                    max=max1;                else                    max=max2;                if(max3<max)                    max=max3;                a[i]=max;            }            printf("%d\n",a[N]);        }    }    return 0;}/**************************************************************Problem: 1214User: kirchhoffLanguage: C++Result: AcceptedTime:10 msMemory:1520 kb****************************************************************/





0 0
原创粉丝点击