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;
}


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

杭电1058——Humble Numbers(丑数问题)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058任何一个数分解到最后都是由一些质数或者1相乘。基于此,题目中将一个数的质数因子在2,3,5,7之中...
  • qianchangdiyin
  • qianchangdiyin
  • 2016年03月03日 12:56
  • 1735

HDU Humble Numbers (dp)

Humble Numbers Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tot...
  • zp___waj
  • zp___waj
  • 2015年06月14日 22:22
  • 996

USACO : Humble Numbers (丑数)

Humble Numbers For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all ...
  • youzn99
  • youzn99
  • 2016年01月27日 14:33
  • 245

USACO 3.1 Humble Numbers (humble)

/* usaco official solution We compute the first n humble numbers in the "hum" array. For simplicity ...
  • u010114214
  • u010114214
  • 2014年02月26日 13:42
  • 1410

Humble Numbers(滚动数组求解)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 yuan
  • Enjoying_Science
  • Enjoying_Science
  • 2014年08月15日 13:44
  • 711

USACO3.1.3 Humble Numbers (humble)

已经知道前k个丑数,如何得到第k+1个丑数? 对于每个质数p,找到最小的丑数h,使得h*p比上一个丑数大,所有的h*p中最小的就是下一个丑数。 但这样会很慢,所以需要一个pindex数组记录每个质...
  • u011265346
  • u011265346
  • 2014年12月10日 09:01
  • 200

Humble Numbers

题意:有一个长度为K的质数集S = {p1, p2, p3, ... , pk},一个整数被定义为humble number当且仅当这个数的因子都是S中的数,求第N个humble number。 ...
  • zc0074200
  • zc0074200
  • 2013年10月16日 18:35
  • 189

humble numbers

Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The...
  • sinat_37668729
  • sinat_37668729
  • 2017年07月17日 16:37
  • 64

ACM--约数--HDOJ 1492--The number of divisors(约数) about Humble Numbers

HDOJ题目地址:传送门 The number of divisors(约数) about Humble Numbers Time Limit: 2000/1000 MS (Java/Other...
  • qq_26891045
  • qq_26891045
  • 2016年05月22日 22:02
  • 3713

modest vs humble

 Modest describes the personality trait or behaviour of not flaunting oneself, talking oneself up...
  • gentle_wolf
  • gentle_wolf
  • 2014年02月27日 22:31
  • 1408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ACM-- Humble Numbers
举报原因:
原因补充:

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