关闭

文章标题

91人阅读 评论(0) 收藏 举报
分类:

问第几个非丑数的值…例如第一个是7,第二个是11。

#include <cstdio>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long LL;
typedef pair<LL,int> PR;
int n;
LL rep[1530];
void init()//创建一个丑数数组
{
    priority_queue<PR,vector<PR>,greater<PR> >Q;
    Q.push(make_pair(1,2));
    for(int i=1;i<=1500;i++)
    {
        PR p=Q.top();
        Q.pop();
        rep[i]=p.first;
        switch(p.second)
        {
            case 2:Q.push(make_pair(p.first*2,2));
            case 3:Q.push(make_pair(p.first*3,3));
            case 5:Q.push(make_pair(p.first*5,5));
        }
    }
}
int main()
{
#ifdef LOCAL
    freopen("in.txt","r",stdin);
#endif
    init();
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        int i=1;
        while(rep[i]<=n)//因为数字只有丑数与非丑数。
        {
            n++;
            i++;
        }
        printf("%d\n",n);
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3712次
    • 积分:369
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类