HDU 1019

HDU 1019
这是一道简单的数论知识题,即  a * b  =  gcd (a , b) * lcm (a,  b);
但是这里要注意一下如何求多个数的lcm  因为易在只有一个数的时候发生错误
# include <stdio.h>
#
include <stdlib.h>
#
include <string.h>
#
include <math.h>

int a[
100000 ];

int gcd ( int a, int b)
{
    
if  ( b  ==  0 )
    
return   a;
    
else
    
return  gcd ( b, a  %  b );
}

int lcm ( int a, int b )
{
    
return   a  /  gcd ( a, b ) *  b;
}

int main ()
{
    int t, m;
    scanf ( 
" %d " & t);
    
while  ( t  --  )
    {
       int temp;
       scanf (
" %d " & m);
       
       
// 输入数据 
       
for  ( int i  =  0; i  <  m; i  ++ )
       {
          scanf (
" %d " & a[i]);
       }
       
// 求值
       temp 
=  a[0];
       
for  ( int i  =   1 ; i  <  m; i  ++ )
       {
        temp 
=  lcm ( temp , a[i]);
       } 
       printf (
" %d\n " , temp);
    }
    system (
" pause " );
   
return  0;
}

你可能感兴趣的:(HDU 1019)