Popularitate

Prima varianta pentru rezolvarea acestei probleme este folosirea numerelor mari. Inmultim in prima faza toate numerele dintr-un grup si apoi le impartim la K atata timp cat restul impartirii este 0. Aceasta abordare obtine 30 de puncte.
Atunci cand K este prim, este de ajuns sa calculam puterea la care apare K in fiecare numar al grupului, fie acesta Tj. Atunci popularitatea grupului este P = T1 + T2 + ... + TNi. Aceasta abordare obtine 30 de puncte.
Un program care pentru K compus calculeaza P folosind prima metoda si pentru K prim calculeaza P folosind metoda a doua obtine 50 de puncte.
Solutia de 100 de puncte a problemei se bazeaza pe reducerea cazului in care K este compus la o varianta modificata a rezolvarii pentru K prim. Fie K = K1F1 * K2F2 * ... * KQFQ unde K1, K2 ... KQ sunt factori primi distincti si presupunem ca F1, F2 ... FQ > 0, In acest caz Q < log(K). Fie Pi popularitatea grupului calculata pentru Ki, atunci popularitatea grupului pentru K este min( [Pi / Fi] ) cu 1 ≤ i ≤ Q. Complexitatea finala este O(sqrt(K) + M*N*log(K)).