zoukankan      html  css  js  c++  java
  • HDU2710 Max Factor

    http://acm.hdu.edu.cn/showproblem.php?pid=2710

    给定N个数,求出其中含有最大素因子的数。

    两个代码:自己的恶心代码

    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    
    int p[20010], max[20005];
    
    inline int cal( int x )
    {
    	for( int i = x / 2; i >= 1; --i )
    	{
    	    if( !p[x] )
    	        return x;
    		if( !p[i] &&  x % i == 0 )
    			return i;
    	}
    }
    
    inline void getint( int &x )
    {
        char c;
        while( c = getchar(), c < '0' || c > '9' ) ;
        x = c -'0';
        while( c = getchar(), c >= '0' && c <= '9' )
            x = x * 10 + c - '0';
        return;
    }
    
    int main()
    {
    	int N;
    	for( int i = 4; i <= 20005; i += 2 )
    	{
    		p[i] = 1;
    	}
    	for( int i = 3; i <= 20005; ++i )
    	{
    		if( !p[i] )
    		{
    			int k = 2 * i;
    			for( int j = i * i; j <= 20005; j += k )
    				p[j] = 1;
    		}
    			
    	}
    	for( int i = 1; i <= 20000; ++i ) // 这个过程复杂化了
    	{
    		max[i] = cal( i );
    	}
    	while( scanf( "%d", &N ) == 1 )
    	{
    		int Max = -1, num, ans;
    		for( int i = 0; i < N; ++i )
    		{
    			getint( num );
    			if( Max < max[num] )
    			{
    				ans = num, Max = max[num];
    			}
    		}
    		printf( "%d\n", ans );
    	}
    	return 0;
    }
    

      新思路的代码:

    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    
    int data[20005];
    
    int main()
    {
        int N;
        for( int i = 2; i <= 20000; ++i )
        {
            if( !data[i] )
            {
                for( int j = 1; i * j <= 20000; ++j )
                    data[i*j] = i;
            }
        }
        while( scanf( "%d", &N ) == 1 )
        {
            int max = -1, ans;
            for( int i = 0; i < N; ++i )
            {
                int c;
                scanf( "%d", &c );
                if( max < data[c] )
                {
                    ans = c;
                    max = data[c];
                }
            }
            printf( "%d\n", ans );
        }
    
        return 0;
    }
    

      

      

  • 相关阅读:
    Oracle函数题
    多态
    继承
    封装
    属性和修饰符
    方法重载
    构造方法
    类与实例
    SQL Server 2005 To Oracle
    Toad for Oracle 使用文档
  • 原文地址:https://www.cnblogs.com/Lyush/p/2233561.html
Copyright © 2011-2022 走看看