hdu5223(GCD)

题目链接:点击打开链接

题意:

首先给定数组中有多少个数,只告诉你他们最小值为1,不告诉你每个数字是多少,要求根据给定区间中数的最大公约数,复原原来的序列。

思路:

先把所有的数初始化为1,然后根据指定问题,如果某一区间的最大公约数是ans, 那么这个区间中的所有数字都是ans的倍数,所以,把区间中的每个数字都赋值为原数字和ans的最小公倍数即可。


这道题本来是一道水题,但由于自己的粗心而导致在比赛中一直是wrong answer。错误的原因就是数据类型用错了。首先看到数据范围是10的9次方,在int范围内(int范围是2的32次方比 4 乘以10的9次方多一点),所以我就考虑使用int行来保存数组中的所有数字,但由于在求最小公倍数是涉及到两个数的乘法,所以有可能会超出int的范围,本来很好处理的问题,但我竟然又声明了一个long long int 的变量用来保存两个int型数据的乘积,这样做是愚蠢的,因为两个int型数据相乘时结果还是int型,用long

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值