当前位置: 代码迷 >> 综合 >> HDU - Lowest Common Multiple Plus
  详细解决方案

HDU - Lowest Common Multiple Plus

热度:10   发布时间:2024-01-20 18:05:27.0

点击打开链接

#include <stdio.h>int gcd(int n,int r)       //欧几里德递归求出最大公约数
{return r?gcd(r,n%r):n; 
}int lcm(int n,int m)       //求出两个数之间的最小公倍数
{return n/gcd(n,m)*m;   // 如果n*m的数字太大,那么可能溢出,这里采用先除再乘
}
int main()
{int n;while(scanf("%d",&n) != EOF){int res = 1,k;while(n--){scanf("%d",&k);res = lcm(res,k);   //所有数的最小公倍数}printf("%d\n",res);}
}

求出所有数字的最小公倍数,可以先每次求出两个数的之间的最小公倍数,最后,得出的结果是所有的数的最小公倍数。

 

  相关解决方案