hdoj1058 Humble Numbers(值得注意的简单题)

本文介绍了一种求解平庸数(特定类型的整数)的算法实现,并展示了如何使用C语言来生成指定位置的平庸数。文章还讨论了输出格式中序数词的变化,确保英语表述的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源http://acm.hdu.edu.cn/showproblem.php?pid=1058

题意很简单。

需要注意的是筛选出平庸数的小技巧和输出时英文第11,12,13的不同表述方式。

#include<stdio.h>
int hn[5845];
int min2(int a,int b)
{
	return (a>b)?b:a;
}
int minn(int a,int b,int c,int d)
{
	return min2(min2(a,b),min2(c,d));
}

int main()
{
	int n;
	int i,l1,l2,l3,l4;
	hn[1]=1;i=1;l1=l2=l3=l4=1;
	while(hn[i]<2000000000)
	{
		hn[++i]=minn(2*hn[l1],3*hn[l2],5*hn[l3],7*hn[l4]);
		if(hn[i]==2*hn[l1])l1++;
	        if(hn[i]==3*hn[l2])l2++;
	        if(hn[i]==5*hn[l3])l3++;
		if(hn[i]==7*hn[l4])l4++;//只能用if,而不能用else if!!!!
	
	}	
	while(~scanf("%d",&n)&&n!=0)
	{
		if(n%10 == 1&&n%100!=11)  
        printf("The %dst humble number is ",n);  
        else if(n%10 == 2&&n%100!=12)  
        printf("The %dnd humble number is ",n);  
        else if(n%10 == 3&&n%100!=13)  
        printf("The %drd humble number is ",n);  
        else  
        printf("The %dth humble number is ",n);  
        printf("%d.\n",hn[n]);  
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值