Мне нужно написать программу такую, что для нескольких запросов типа L, R мне нужно вывести LCM чисел от L до R. где R может max перейти к MПрограмма для вычисления LCM из K последовательных чисел mod 1000000007 с низкой сложностью
Мне удалось написать программу сложности N (Q) .M, Мне нужно сделать это в N (Q) .Log (M) или N (Q) .sqrt (M) ,
Здесь N (Q) обозначает отсутствие запросов. sqrt обозначает квадратный корень.
EDIT: Я написал его с помощью Segmentree, однако получить неправильный ответ, здесь powf находит^Ь% P во время LogN: Моего код запроса:
long long findfunc(long long ql,long long qr,long long ind)
{
if(a >qr || b<ql)
return 1;
if(a>=ql && b<=qr)
{ //cout<<"LCM "<<ql<<" to "<<qr<<" "<<val[ind]<<endl;
return val[ind]%mod;
}
else
{
ll vl= findfunc(ql,qr,2*ind+1);
ll vr= findfunc(ql,qr,2*ind+2);
return (((vl*vr)%mod) * powf(gcd(vl,vr),mod-2) )%mod;
}
}
Каков предел для M? – svs
M может перейти 10^5 и N (Q) может goto 10^6 – smartsn123
Попробуйте изучить «Сегментные деревья». – vish4071