題意
給出正整數
思路
因爲後面一項的前綴和可以維護,所以總的複雜度是
代碼
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
long long res, n, k, last;
int main(){
scanf("%lld%lld", &n, &k);
res += n*k;
n = min(n, k);
for(long long i = 1; i <= n; i = last+1){
last = min(n, k/(k/i));
res -= (k/i)*(i+last)*(last-i+1)/2;
}
printf("%lld", res);
return 0;
}