思路: 把这个数列分成 很多块, 直接一个块一个块的判断,处理, 2边的就暴力
下面是分块除法的处理:
#include <bits/stdc++.h> using namespace std; #define ri register int #define M 10005 struct daisn{ int l,r,sum; }p[M]; int val[M]; int main(){ int l=1; int tmp=0; while(l<=n) { int r=(n/(n/l)); p[++tmp].l=l;p[tmp].r=r;p[tmp].sum=(r-l+1)*(n/l); l=r+1; } }