HDU 4961 Boring Sum

智商鸿沟不可越系列。。。

思路是这样:首先对于1~100000每一个数生成一个约数表,方便以后查询,我们再建立一个int数组为vis,尺寸100000。接下来对于输入的数组,从左往右扫描,对于每一个数,如果vis[这个数]有值,说明当前数左端有倍数存在,最近的倍数就是这个vis值,没有的话,就是这个数本身,接下来读取当前数的每一个约数,对于每一个约数,当前数都是他们的倍数,所以更新vis[每一个约数]的值为当前数就可以了。
接下来方向反过来,从右到左扫描,算出c值,最统一出答案,小心别爆了int就行。

Scroll to top