我的除法写在前面时候为什么就A了?
写后面不A...
#include<bits/stdc++.h>
using namespace std;
long long n,k,t,mod=998244353;
inline long long h(long long in)
{
long long ans=0,l=1,r;
while(l<=in)
{
r=in/(in/l);
ans=(ans+(((in/l)%mod)*(r-l+1)%mod)%mod)%mod;
l=r+1;
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
cout<<(h(k)-h(n-1)%mod+mod)%mod;
return 0;
}
原先
#include<bits/stdc++.h>
using namespace std;
long long n,k,t,mod=998244353;
inline long long h(long long in)
{
long long ans=0,l=1,r;
while(l<=in)
{
r=in/(in/l);
ans=(ans+((r-l+1)%mod*((in/l)%mod))%mod)%mod;
l=r+1;
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
cout<<(h(k)-h(n-1)%mod+mod)%mod;
return 0;
}