刚开通博客,这算是第一篇文章吧。为什么要开通博客呢?因为这题虽然是水题,但我交了2次都wa了。(吸取教训)其实你可以暴力解出来。但我用辗转相除,这是我个人想出来的最优解了。。。我测试了好几组数据都是可以的,但wa两次让我怀疑人生。其实就是辗转相乘的时候两数相乘会超过 int 的最大界限,所以是先除。。。
不过刚开始ACM,还是吸取教训为主。我个人比较追求最优。。如果这题还有什么优化的话,还请各位指点一下。。
http://acm.hdu.edu.cn/showproblem.php?pid=2028 题目地址
代码如下(纯属原创)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int get_fun(int m,int n)
{
int t,m1,n1;
m1=m,n1=n;
while(n){
t = n;
n = m%n;
m = t;
}
return m1/t*n1;
}
int main()
{
int n,i,f,j;
int a[3];
while(scanf("%d",&n)!=EOF){
f = 0;
for(i=0;i<n;i++){
if(i&&f){
j=0;
scanf("%d",&a[j]);
}
else{
j = i;
scanf("%d",&a[j]);
}
if(i>0){
if(!j) j++;
a[j]=get_fun(a[j],a[j-1]);
f=1;
}
}
if(n==0) a[j]=0;
printf("%d\n",a[j]);
}
return 0;
}