POJ 1338 Ugly Numbers

来源:互联网 发布:卡梅隆安东尼体测数据 编辑:程序博客网 时间:2024/05/17 07:36
对构造目标函数还是不熟悉。自己每次都是想用排除法去构造,于是  时间和空间复杂度提高。不如采用直接构造  数列 的方法         或者直接找出目标数    或 用i j  k 循环 等构造Ugly NumbersTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 17602Accepted: 7805DescriptionUgly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ... shows the first 10 ugly numbers. By convention, 1 is included. Given the integer n,write a program to find and print the n'th ugly number. InputEach line of the input contains a postisive integer n (n <= 1500).Input is terminated by a line with n=0.OutputFor each line, output the n’th ugly number .:Don’t deal with the line with n=0.Sample Input1290Sample Output1210#include<iostream>using namespace std;int a[1510];int main(){    int p2,p3,p5;    p2=p3=p5=a[1]=1;    int n;    for(int i=2;i<=1500;i++)    {          int t2=a[p2]*2;          int t3=a[p3]*3;          int t5=a[p5]*5;          if(t2<t3&&t2<t5)  {a[i]=t2;p2++;}          else if(t3<t2&&t3<t5) {a[i]=t3;p3++;}          else if(t5<t2&&t5<t3)   {a[i]=t5;p5++;}          else if(t2==t3&&t2<t5)  {a[i]=t2;p2++;p3++;}          else if(t2==t5&&t2<t3)  {a[i]=t2;p2++;p5++;}          else if(t3==t5&&t3<t2)  {a[i]=t3;p3++;p5++;}          else {a[i]=t2;p2++;p3++;p5++;}    }    while(cin>>n&&n!=0)    {         cout<<a[n]<<endl;    }    return 0;}


	
				
		
原创粉丝点击