Ural 1049 Brave Balloonists

Ural 1049 Brave Balloonists
求a[1] × a[2] × …… × a[10]的约数个数。
以下是我的代码:
#include  < iostream >
#include 
< map >
#include 
< cstdio >
using   namespace  std;

typedef unsigned 
long   long  int64;

int64 a[
17 ];
map
< int64,int64 >  r;

void  Input ()
{
    
for  (  int  i  =   1 ; i  <=   10 ; i ++  )
        cin 
>>  a[i];
}

void  Fac ( int64 x )
{
    
while  ( ( x  &   1  )  ==   0  )
    {
        x 
>>=   1 ;
        r[
2 ] ++ ;
    }
    
for  (  int  i  =   3 ; i  *  i  <=  x; i +=   2  )
        
while  ( x  %  i  ==   0  )
        {
            x
/= i;
            r[i]
++ ;
        }
    
if  ( x  !=   1  )
        r[x]
++ ;
}

void  Solve ()
{
    r.clear();
    
for  (  int  i  =   1 ; i  <=   10 ; i ++  )
        Fac ( a[i] );
    
int  ans  =   1 ;
    
for  ( map < int64,int64 > ::iterator i  =  r.begin(); i  !=  r.end(); i ++  )
    {
        
// cout << i->first << " " << i->second << endl;
        ans  *=  i -> second  +   1 ;
    }
    cout 
<<  ans  %   10   <<  endl;
}

int  main ()
{
    Input ();
    Solve ();
    
    
return   0 ;
}

你可能感兴趣的:(Ural 1049 Brave Balloonists)