LCM Cardinality

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31675#problem/E

暴力

 

// File Name: uva10892.cpp

// Author: bo_jwolf

// Created Time: 2013年09月16日 星期一 22:32:26



#include<vector>

#include<list>

#include<map>

#include<set>

#include<deque>

#include<stack>

#include<bitset>

#include<algorithm>

#include<functional>

#include<numeric>

#include<utility>

#include<sstream>

#include<iostream>

#include<iomanip>

#include<cstdio>

#include<cmath>

#include<cstdlib>

#include<cstring>

#include<ctime>



using namespace std;



vector<int> Q ;

long long n ;



long long gcd( long long a , long long b ) 

{

	return b == 0 ? a : gcd( b , a % b ) ;

}



long long lcm( long long a , long long b )

{

	return ( 1LL*a * b ) / gcd( a , b ) ;

}



int main()

{ 

	while( scanf( "%lld" , &n ) != EOF )

	{

		if( n == 0 )

			break ;

		Q.clear() ;

		for( long long i = 1 ; i <= sqrt( n ) ; ++i )

		{

			if( n % i == 0 )

			{

				if( n / i != i )

				{

					Q.push_back( n / i ) ; 

					Q.push_back( i ) ;

				}

				else

				{

					Q.push_back( i ) ;

				}

			}

		}

		long long len = Q.size() ;

		long long ans = 1 ; 

		for( long long i = 0 ; i < len ; ++i )

		{

			for( long long j = i + 1 ; j < len ; ++j )

			{

				if( lcm( Q[ i ] , Q[ j ] ) == n ) 

						ans++ ;

			}

		}

		printf( "%lld %lld\n" , n , ans ) ;

	}

return 0;

}


 

 

你可能感兴趣的:(it)