В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
veronik09
veronik09
26.01.2021 17:23 •  Информатика

С++. Есть код на нахождение количества и суммы делитель числа. Нужно его оптимизировать. Выполняется очень долго сам код:
#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;
}

Показать ответ
Ответ:
ghhhghf
ghhhghf
17.07.2021 15:00

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;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота