У нас есть набор S {1,10,100,1000,10000}
.Теперь мы вводим целое число x
(скажем, x
= 4
).
Теперь мы должны добавить каждый элемент продукта набора с x
к самому набору.Итак, наконец
S={1,10,100,1000,10000,4,40,400,4000,40000}
[S
изначально не ограничивается только 5 записями]
Нам нужно посетить только начальные элементы в наборе.Я попробовал подход, подобный следующему:
for(auto i=s.begin();i!=s.end();i++)
{
s.insert((*i)*x);
}
Это не дает желаемого результата, поскольку размер набора продолжает увеличиваться.
Еще один подход, который я пробовал, состоял в том, чтобы сохранить все кратные (*i)*x
вдругой временный набор / вектор и объединить его с s позже.Но поскольку исходный набор данных огромен, он ухудшает сложность времени.Какие-нибудь оптимизации?