首页 > 代码库 > hdu 1299
hdu 1299
这个方法太厉害了 别人的记录一下
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<bitset> #include<iomanip> using namespace std; #define MAX_PRIME 31700 #define PRIME_NUM 3500 int Primes[ PRIME_NUM + 10 ] ; int _Count = 0 ; int GetPrimes( ) { unsigned char *PrimeBuffer = ( unsigned char * ) malloc( sizeof( unsigned char ) * ( MAX_PRIME + 10 ) ) ; int i , j ; memset( Primes , 0 , sizeof( int ) *PRIME_NUM ) ; memset( PrimeBuffer , 0 , sizeof( unsigned char) * MAX_PRIME ) ; for( i = 2 ; i < MAX_PRIME ; i++ ) { if( PrimeBuffer[ i ] == 0 ) Primes[ _Count++ ] = i ; for( j = 0 ; j < _Count && i * Primes[ j ] <= MAX_PRIME ; j++ ) { PrimeBuffer[ i * Primes[ j ] ] = 1 ; if( i % Primes[ j ] == 0 ) break ; } } free( PrimeBuffer ) ; return _Count ; } int main() { GetPrimes(); int Case , n , num , sum , temp; cin >> Case ; temp = 0 ; while( Case-- ) { cin >> n ; sum = 1 ; for( int i = 0 ; i < _Count ; ++i ) { int flag = ( int )sqrt( n ) + 1 ; if( Primes[ i ] > flag ) break ; num = 0 ; while( n % Primes[ i ] == 0 ) { num++ ; n /= Primes[ i ] ; } sum *= ( 1 + 2 * num ) ; } if( n > 1 ) sum *= 3 ; cout << "Scenario #" << ++temp << ":" << endl ; cout << ( sum + 1 ) / 2 << endl << endl ; } return 0 ; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。