快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

杭电OJ2028最小的公倍数之和C语言版-创新互联

我们看到这一题最先想到的是什么方法??

创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目网站设计、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元盐津做网站,已为上家服务,为盐津各地企业和个人服务,联系电话:18980820575

我想十有八九想到的都是暴力枚举的方法:先把全部的数字相乘,再从1开始枚举一直到有一个最小的数可以整除所有的数字。但作为上进的程序员,我们肯定会不禁想:这是啥啊,怎么这么拉啊。
所以我们才在这里遇见,寻求不拉的方法

那么在这里,我介绍的是用数学规律的解法:
关键思路:
1:两个数的最小公倍数等于两个数的乘积再除与两个数的大公因数
2:重复使用辗转相除法得到大的公因数(注意大小的先后问题,若是小的在前则要交换,故要先判断大小)
3:多个数的最小公倍数可以利用前面两个数的最小公倍数与下一个数求最小公倍数,如此直到最后一个数,便得到了多个数的最小公倍数
4:为了避免溢出,第一步不妨先用一个数除与大公因数再乘于另一个数

#includeint main()
{int n,inset,o,p;
    int temp,temp1;
    while(scanf("%d",&n)!=EOF)
    {scanf("%d",&temp);
        for(int i=0;iscanf("%d",&temp1);
        if(temp   inset=temp;
           temp=temp1;
           temp1=inset;
         }
            o=temp;p=temp1;
         while(o%p!=0)
          {   inset=o%p;
           o=p;
           p=inset;
          }
           temp=temp/p*temp1;//避免了溢出
        }
        printf("%d\n",temp);
    }
    return 0;}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:杭电OJ2028最小的公倍数之和C语言版-创新互联
标题网址:http://6mz.cn/article/hcsoo.html

其他资讯