分析
读完题分析一下发现是要我们求 。我们可以发现 最多也只有 种取值,而且取值连续。那么我们考虑数论分块。至于数论分块的证明我这里放个网址 这个 有非常优秀的证明,便不加赘述。
代码
#include<bits/stdc++.h> using namespace std; #define LL long long LL a,b,ans; int main() { cin >> a >> b;a--; for(LL l = 1,r = 1;l <= b;l = r + 1) r=b/(b/l),ans += (r-l+1)*(b/l); for(LL l = 1,r = 1;l <= a;l = r + 1) r=a/(a/l),ans -= (r-l+1)*(a/l); cout << ans << endl; }