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

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

Показать ответ
Ответ:
fghjik
fghjik
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-бота