首页 > 代码库 > SCU 1029 Humble Numbers (打表处理)

SCU 1029 Humble Numbers (打表处理)

题目链接

题意:素因子中只有2 3 5 7的数称为谦逊的数,1也是谦逊的数,题目中已经给出了前20个谦逊的数。给定数字n,按格式输出第n个谦逊的数。

题解:打表即可,注意打表的技巧就行了。

ps:这道题和去年多校做过的一道题很像,那道题是输出大于等于n的第一个数,附上链接:传送门。

#include <cstdio>
#include <iostream>
using namespace std;
#define N 6005
typedef long long ll;
ll data[N];
int cnt,n;
void get()
{
    cnt=2;
    data[1]=1;
    int p2=1,p3=1,p5=1,p7=1;
    for(int i=2; i<=6000; i++)
    {
        data[i]=min(min(data[p2]*2,data[p3]*3),min(data[p5]*5,data[p7]*7));
        if(data[i]==data[p2]*2) p2++;
        if(data[i]==data[p3]*3) p3++;
        if(data[i]==data[p5]*5) p5++;
        if(data[i]==data[p7]*7) p7++;
    }
}
int main()
{
    get();
    while(scanf("%d",&n)&&n)
    {
        printf("The %d",n);
        if(n%100!=11&&n%10==1) printf("st");
        else if(n%100!=12&&n%10==2) printf("nd");
        else if(n%100!=13&&n%10==3) printf("rd");
        else printf("th");
        printf(" humble number is ");
        printf("%lld.\n",data[n]);
    }
    return 0;
}

 

SCU 1029 Humble Numbers (打表处理)