题目
简而言之:给你一串等比数列的子项,然后求其最大公比,输出的时候得是最简分数。
思路
拿到数据存放如数组,然后降序排序并去重,然后让a[i]/a[i+1]
,这样我们得到的就是qn-m,存放到一个新数组中,然后对整个数组执行这样的操作,就能得到一大堆qx-y(这里的x,y指的是未知数,不代表某个特定的数,下同),我们在整个新数组中找到一个最小的qx-y,那么如何判断这个数是不是最大公约数呢(即q1)?我们可以那这个数与其他qx-y相除,如果和另外所有的qx-y都能整除,并且不断地除除除,能一直除到1,那么他就是最大公比。
但是倘若不能整除呢?这里我们可以用到辗转相除法类似的原理,我们举一个例子,25是32,24是16,32/16=2,说明16不是公比,这时候我们可以拿2去整除16,16/2=8,8/2=4,4/2=2,2/2=1,所以这里2是公比。
遗憾的是笔现在太菜,还不能写出代码,但是思路肯定是没问题的,以后有机会的话,笔者会回来更新代码的~