ACM-- Humble Numbers

原创 2015年07月08日 15:41:52
//   Humberl Numbers;
//  写出仅由2,3,5或7为因子的数。
//   前20项如 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27 
//   可知,前面的项在乘2,3,5或7后得到的数是符合的 
//   从1开始计算,1分别与4个因子相乘,分别为2,3,5,7,其中最小的数2符合。 
//   所以f(n)=min(f(i)*2,f(j)*3,f(m)*5,f(n)*7).    每取出一次最小的数,相应的变量+1.既移到下一个数。 
//   若最小的数相等,变量同时+1
//   Ps:11和1011 的英文表达都是11th,1011th  
#include<iostream>
#include<algorithm>
#include<stdio.h>
long long a[5900];
using namespace std;
int main()
{
	a[1]=1;
	int i=1,j=1,m=1,n=1;
	for(int k=2;k<=5842;k++)
	{
		int b[4];
		b[0]=a[i]*2;
		b[1]=a[j]*3;
		b[2]=a[m]*5;
		b[3]=a[n]*7;
		int min=b[0];
		for(int q=1;q<4;q++)
		  if(b[q]<min)
		    min=b[q];
		//cout<<i<<" "<<j<<" "<<m<<" "<<n<<" "<<endl;
		a[k]=min;
	    for(int q=0;q<4;q++)	
	    {
	    	if(b[q]==min)
	    	{
	    	   switch(q)
			   {
			   	 case 0:i++;break;
			   	 case 1:j++;break;
			   	 case 2:m++;break;
			   	 case 3:n++;break;  	
			   }		
	    	}
	    }
	   //cout<<a[k]<<endl; 
	}
	int Num;
	while(cin>>Num,Num)
	{   
		int t=Num%10;
		if(Num%100==11||Num%100==12||Num%100==13)
		  t=4;
		char Out[1000];
		switch(t)
		{
			case 1:sprintf(Out,"The %dst humble number is %lld.",Num,a[Num]);break;
			case 2:sprintf(Out,"The %dnd humble number is %lld.",Num,a[Num]);break;
			case 3:sprintf(Out,"The %drd humble number is %lld.",Num,a[Num]);break;
			default:sprintf(Out,"The %dth humble number is %lld.",Num,a[Num]);
		}
		cout<<Out<<endl;
	}	
	return 0;
}


版权声明:随便转载,随便复制

ACM--steps--3.2.4--Humble Numbers

Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other...

[ACM] hdu 1058 Humble Numbers

解题思路: 一个humble数指素数因子只有2,3 , 5, 7的数,比如1(也是), 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, ...

ACM-DP之Humble Numbers——hdu1058

ACM,DP,Humble Numbers,hdu1058

Humble Numbers 简单DP

  • 2012年10月08日 14:43
  • 49KB
  • 下载

HDOJ题目1058Humble Numbers(数学,丑数)

Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

HDU 1058 Humble Numbers && NOJ 1420 丑数 (数位dp)

有趣的数位dp

HDU1058Humble Numbers

Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

hdu 1058 Humble Numbers【丑数】

DP&&英语== 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 Humble Numbers Time Limit: 2000/...

hdu Humble Numbers(打表)

Humble Numbers Problem Description A number whose only prime factors are 2,3,5 or 7 is called a ...

hdu 1085 Humble Numbers(打表)

题目:一个数的素数因子是只有有2,3,5,7,叫做humble number,前20个 humble number为 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15...
  • wconvey
  • wconvey
  • 2012年04月13日 16:56
  • 345
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACM-- Humble Numbers
举报原因:
原因补充:

(最多只允许输入30个字)