Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define ll long long
using namespace std;
const int N = 1e6 + 5;
ll d[N + 6],t[N+6];
void sanguoc()
{
for(ll i = 1 ; i <= N; i++)
for(ll j = i; j <= N; j += i)
{
d[j]++;
t[j]+=i;
}
}
ll dpa[N+6],dpb[N+6];
void dp()
{
dpa[0]=dpb[0]=0;
for(ll i=1;i<=N;i++)
{
dpa[i]=dpa[i-1]+d[i];
dpb[i]=dpb[i-1]+t[i];
}
}
int main()
{
sanguoc();
dp();
ll t;
cin>>t;
while(t--)
{
ll a,b;
cin>>a>>b;
cout<<dpa[b]-dpa[a-1]<<" "<<dpb[b]-dpb[a-1]<<endl;
}
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin