首先的话我们需要知道这种类型的题一般常规做法就三种暴力、dp和搜索(当然有些神奇的题目可能会用到其他的做法比如说数论)。暴力思路很容易想到,但是复杂度显然不允许。需要考虑 dp /记忆化搜索,首先可以发现的是产生的数非常小,于是我们可以开一个数组来存放存产生的数(产生了 32 那么 mark[32] = 1)那么我们就可以这么做,外循环循环 n 次,内循环循环 l 到 r ,每次遍历整个数组。对于上一轮产生的所有数,我们加上i×i(l-r)累加到新数组(mark1[32+ii] = 1),因为赋值永远是1所以在这个过程中完成了自动除重 ,然后再把新数组赋值给旧数组。for(i->n)ma...