zoukankan      html  css  js  c++  java
  • USACO Section 3.1 Humble Numbers (humble)

    Humble Numbers

    For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all numbers whose prime factors are a subset of S. This set contains, for example, p1, p1p2, p1p1, and p1p2p3 (among others). This is the set of `humble numbers' for the input set S. Note: The number 1 is explicitly declared not to be a humble number.

    Your job is to find the Nth humble number for a given set S. Long integers (signed 32-bit) will be adequate for all solutions.

    PROGRAM NAME: humble

    INPUT FORMAT

    Line 1: Two space separated integers: K and N, 1 <= K <=100 and 1 <= N <= 100,000.
    Line 2: K space separated positive integers that comprise the set S.

    SAMPLE INPUT (file humble.in)

    4 19
    2 3 5 7
    

    OUTPUT FORMAT

    The Nth humble number from set S printed alone on a line.

    SAMPLE OUTPUT (file humble.out)

    27
    思路:暴力吧,但是我只能说我STL写的太臭了!!!看了7个半小时别人的代码才勉强通过。
    Executing...
       Test 1: TEST OK [0.000 secs, 3360 KB]
       Test 2: TEST OK [0.000 secs, 3360 KB]
       Test 3: TEST OK [0.000 secs, 3360 KB]
       Test 4: TEST OK [0.011 secs, 3492 KB]
       Test 5: TEST OK [0.022 secs, 3888 KB]
       Test 6: TEST OK [0.065 secs, 5604 KB]
       Test 7: TEST OK [0.022 secs, 4020 KB]
       Test 8: TEST OK [0.022 secs, 4020 KB]
       Test 9: TEST OK [0.000 secs, 3360 KB]
       Test 10: TEST OK [0.000 secs, 3360 KB]
       Test 11: TEST OK [0.000 secs, 3360 KB]
       Test 12: TEST OK [0.281 secs, 5604 KB]
    
    All tests OK.
    /*
    ID:wuhuaju2
    PROG:humble
    LANG:C++
    */
    
    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <algorithm>
    #include <cstring>
    #include <set>
    using namespace std;
    
    
    int a[110];
    int n,p,l;
    
    set<int> s;
    
    void close()
    {
    	fclose(stdin);
    	fclose(stdout);
    	exit(0);
    }
    
    void print(set<int> s)
    {
    	set<int>::iterator it;
    	for (it=s.begin();it!=s.end();it++)
    	cout<<*it<<" ";
    	cout<<endl;
    }
    
    
    void work()
    {
    }
    
    void init ()
    {
    freopen("humble.in","r",stdin);
    freopen("humble.out","w",stdout);
       scanf("%d %d",&n,&p);
    	for (int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		s.insert(a[i]);
    	}
    	for (int i=1;i<=n;i++)
    	{
    		set<int>::iterator it=s.begin();
    		while (2)
    		{
    			int t=(*it)*a[i];
    			if (t<0) break;
    	//		cout<<"t:"<<t<<endl;
    			l=s.size();
    			if (l>p)
    			{
    				s.erase(--s.end());
    				if (t>*(--s.end()))
    					break;
    			}
    	//		print(s);
    			s.insert(t);
    			it++;
    		}
    	}
    	cout<<*--s.end()<<endl;
    }
    
    int main ()
    {
    	init();
    	work();
    	close();
    	return 0;
    }
    
  • 相关阅读:
    Programming asp.net笔记第三章 Controls: Fundamental Concepts
    Aspnet_regsql.exe命令行使用小结
    [转] 130道C#面试题
    [转]彻底搞定C指针-函数名与函数指针
    common softwares
    PS10.0教程视频
    正则表达式30分钟入门教程
    Windows Live Messenger Error 80040154 (Windows 7)
    Canvas translate() 绘制“米”字
    HTML5钟表【每日一段代码3】
  • 原文地址:https://www.cnblogs.com/cssystem/p/2908123.html
Copyright © 2011-2022 走看看