整除分块板子,看看证明主要
题面
颓式子
自己写的狗屎代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod = 998244353;
ll l,r;
ll f(ll x)
{
ll ans=0;
for(ll l=1,r;l<=x;l=r+1) // l,r都为long long,不然TLE,想不到吧
{
r=x/(x/l); // 从l->r x/的值一样
ans+=((r-l+1)*(x/l)%mod)%mod; // 整除分块优化原理就是这一截一截的数量小于sqrt(n)
}
return ans;
}
int main()
{
scanf("%lld%lld",&l,&r);
printf("%lld",( (f(r)%mod-f(l-1)%mod+mod)%mod ));
}