zoukankan      html  css  js  c++  java
  • hdu 1058 Humble Numbers

    因为数字达到了2亿。所以用不了筛选。我用的是bfs+map判重

    至于输出格式.......看代码吧~

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<map>
    #include<algorithm>
    #include<cstring>
    #define maxn 2000000000+5
    #define ll long long
    using namespace std;
    int f[6000];
    priority_queue<ll, vector<ll>, greater<ll> >mapp;
    map<ll,int>root;
    void solve()
    {
    	ll x=1;
    	mapp.push(x);
    	int k=0;
    	while(mapp.size())
    	{
    		x=mapp.top();
    		mapp.pop();
    		f[k++]=x;
    		if(x*2<maxn&&root.find(x*2)==root.end()) mapp.push(2*x),root[2*x]=1;
    		if(x*3<maxn&&root.find(x*3)==root.end()) mapp.push(3*x),root[3*x]=1;
    		if(x*5<maxn&&root.find(x*5)==root.end()) mapp.push(5*x),root[5*x]=1;
    		if(x*7<maxn&&root.find(x*7)==root.end()) mapp.push(7*x),root[7*x]=1;
    	} 
    }
    int main()
    {
    	solve();
    	int m;
    	while(scanf("%d",&m)!=EOF&&m)
    	{
    		if(m%10==1 && m%100!=11) printf("The %dst humble number is %d.
    ",m,f[m-1]);
            else if(m%10==2 && m%100!=12) printf("The %dnd humble number is %d.
    ",m,f[m-1]);
            else if(m%10==3 && m%100!=13) printf("The %drd humble number is %d.
    ",m,f[m-1]);
            else printf("The %dth humble number is %d.
    ",m,f[m-1]);
    	}
    	return 0;
    }


     

  • 相关阅读:
    find
    fdisk
    falcon-eye
    ethtools
    e2fsck
    dpkg
    declare
    df
    debconf-utils
    区块链从零开始做开发(0):hyperledger Fabric2.3安装
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6885559.html
Copyright © 2011-2022 走看看