hdu 1019 Least Common Multiple最小公倍数

Least Common Multiple最小公倍数添加链接描述
1019题编程
结论:遇最小公倍数,想辗转相除法
1.使用辗转相除法要快速,节时。

#include<stdio.h>
int main(void)
{
 int a[10010],b,i,t,m,n,z,gbs;
 scanf("%d",&t);
 while(t){
  scanf("%d",&b);
      for(i=0;i<b;++i){
    scanf("%d",&a[i]);
   }
  gbs=a[0];
   for(i=1;i<b;i++) {
            m = gbs;
            n = a[i];
            while(z = m % n) {
                m = n;
                n = z;
            }
            gbs = gbs/ n * a[i];
        } 
  printf("%d\n",gbs);
  --t;
 } 
 return 0;
}

2.用原理做题 ,数大耗时超时

#include<stdio.h>
int main()
{
 int a[1000],b,i,n,gbs;
 long long w;
 scanf("%d",&n);
 while(n){
  scanf("%d",&b);
      for(i=0;i<b;++i){
    scanf("%d",&a[i]);
   }
  for(i=0;i<b-1;++i){
   for(gbs=a[i];gbs<=(a[i]*a[i+1]);gbs++){
    if(gbs%a[i]==0&&gbs%a[i+1]==0){
     a[i+1]=gbs;
     break; 
    }
   
   }
  }
  w=a[b-1];
  printf("%lld\n",w);
  --n;
 } 
 return 0;
}
//超时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值