Предмет: Информатика, автор: babakovi679

С++.Даю 20 баллов. Есть код на нахождение количества и суммы делитель числа. Нужно его оптимизировать. Выполняется очень долго
сам код:
#include < >

int main()
{
int n, s = 0, ans = 0;
std::cin >> n;
for(int i = 1; i <= n; i++)
{
if(n % i == 0)
{
ans = ans + i;
s++;
}
}
std::cout << s << " " << ans;
}


babakovi679: если идти до корня, то ответ не правильный
babakovi679: вместо 4 и 12 выдает 4 и 3 при n = 6

Ответы

Автор ответа: stglupa
1

pair<int,int> dels(int k){

   int sm = 0;

   set<int> s;

   for(int i = 1; i * i <= k; i++){

       if(k % i == 0){

           s.insert(i);

           s.insert(k/i);

           sm += i + k/i * (i != k/i);

       }

   }

   return {s.size(), sm};

}

signed main(){

   int n;

   cin >> n;

   pair<int, int> ans = dels(n);

   cout << ans.first << " " << ans.second;

}


babakovi679: контест из сириуса. вариант с 6 подходит. ответ там 4 и 12. но остальные тесты я хз какие не проходит
babakovi679: по порядку там все верно, может переменные маленькие. я попробую на лонгшезам лонгшезам поменять
babakovi679: поменял инты уже. все равно не проходит
Похожие вопросы
Предмет: Математика, автор: CIGANO1