Вака, диме прв даде одговор, ама за жал brute force. 2 поени
јас, даде најоптимизиран алгоритам (линеаред) и добива 3 поени!
Димитар даде точен одговор 1 поен
deXterche и loverboy дадоа точни одговори, ама го пропуштија рокот за кодот. Сепак бидејќи и двајцата се излизгаа со кодови па потоа ги избришаа (модератор пауер!!!), ќе им дадам по еден поен.
Значи, моментална ранг листа:
јас - 3 поени
диме - 2 поени
Димитар - 1 поен
deXterche - 1 поен
loverboy - 1 поен
јас: имаш мандат за наредна задача.
Совет: не користете Math.pow(). Многу е бавен. Наместо p = Math.Pow(a,b) користете:
Код:
int p = 1;
for (int i=0; i<b; i++) p*=a;
А еве го моето решение, многу слично со она на јас:
Код:
public int coolDivisors(int a, int b, int n) {
int mBrojka=0;
int gore,dole;
long nTa;
for (int i=2; i<=(a+b)/2;i++)
{
gore = (a+b)/i;
dole = (a-1)/i;
mBrojka+=gore-dole;
if (i>=a && i<=(a+b)) mBrojka--;
nTa = 1;
for (int j=0; j<n && (a+b)>=nTa; j++)
nTa*=i;
gore = (int)((a+b)/nTa);
dole = (int)((a-1)/nTa);
mBrojka-=gore-dole;
}
return mBrojka;
}
п.с. сега и јас ќе ги решавам задачите (како стигнам), ама не си ставам поени како и да е.