zoukankan      html  css  js  c++  java
  • hdu-1058(map)

    题意:输出第n个能拆分成由,2,3,5,7中的一个或者多个组成的数;

    解题思路:a[i+1]=a[i]*2;a[i+2]=a[i]*3;a[i+3]=a[i]*5;a[i+4]=a[i]*7;然后把重复的去掉就行了,可以用map标记,也可以用set存,看心情;注意1是第一个数,我也不知道为什么0.0;

    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<cstdio>
    #define ll long long
    #define maxn 1000000000
    using namespace std;
    ll a[60000];
    map<ll,int>m;
    int cnt=0;
    int main()
    {
        int z;
        int n;
        a[++cnt]=1;
        for(int i=1;i<=10000;i++)
        {
            if(a[i]>2*maxn)
                continue;
            if(m[a[i]*2]==0&&a[i]<=maxn)
            {
                a[++cnt]=a[i]*2;
                m[a[i]*2]=1;
            }
            if(m[a[i]*3]==0&&(a[i]*3)<=(maxn*2))
            {
                a[++cnt]=a[i]*3;
                m[a[i]*3]=1;
            }
            if(m[a[i]*5]==0&&(a[i]*3)<=(maxn*2))
            {
                a[++cnt]=a[i]*5;
                m[a[i]*5]=1;
            }
            if(m[a[i]*7]==0&&(a[i]*3)<=(maxn*2))
            {
                a[++cnt]=a[i]*7;
                m[a[i]*7]=1;
            }
        }
        sort(a+1,a+1+cnt);
         while(scanf("%d",&n)&&n){
      if(n%100==11  ||  n%100==12 || n%100==13)
           printf("The %dth humble number is %lld.
    ",n,a[n+1]);
      else if(n%10==1)
           printf("The %dst humble number is %lld.
    ",n,a[n+1]);
      else if(n%10==2)
           printf("The %dnd humble number is %lld.
    ",n,a[n+1]);
      else if(n%10==3)
           printf("The %drd humble number is %lld.
    ",n,a[n+1]);
      else
           printf("The %dth humble number is %lld.
    ",n,a[n+1]);
    }
        return 0;
    }
  • 相关阅读:
    Markdown简介
    主动安全协议-广东标准(粤标)和江苏标准(苏标)的区别及平台开发
    机动车驾驶员计时培训系统平台技术规范
    DevOps 之路
    allinaws
    Dockerfile-For-Python
    Mac 添加vmware fusion nat网卡信息
    AWS 使用S3为Web站点
    AWS ALB实现80端口跳转443端口
    深入理解Service
  • 原文地址:https://www.cnblogs.com/huangdao/p/8604803.html
Copyright © 2011-2022 走看看