Дан массив a, состоящий из n целых неотрицательных чисел. Ваша задача — построить по нему массив b, задающийся следующей формулой: bi=(ai,2⋅ai,если ai — нечетное число;если ai — четное число.)
Оба массива нумеруются, начиная с 0 (например, массив a имеет вид a0, a1, a2, ..., an−1).
Формат входных данных
В первой строке входных данных находится натуральное число n — количество элементов массива (n≤500).
Во второй строке вводятся n целых неотрицательных чисел, разделённых пробелами — элементы этого массива. Элементы массива не превосходят 1000.
Формат выходных данных
Выведите на экран n целых неотрицательных чисел, разделённых пробелами — элементы массива b.
входные данные
4
1 3 3 7
5
4 20 412 3 2
выходные данные
1 3 3 7
8 40 824 3 4
Рассмотрим три решения
Объяснение:
Попробуем тремя :
1) используя numpy, создадим список с метода arange, позволяющего делать range нецелочисленным. Далее просто суммируем получившийся список (для суммы можно импортировать fsum из библиотеки math, а можно воспользоваться и стандартной sum)
2) исходя из определения арифметической прогрессии:
нам известен первый член (0.5), разность (1), последний член (99.5), а также количество членов прогрессии. Просто посчитаем по формуле.
3) с цикла вычислим все то же самое. Будем постепенно прибавлять к сумме увеличивающийся на 1 первый элемент.
Как видим, все три работают одинаково верно.
#include <iostream>
#include <string>
using namespace std;
string fn(unsigned value, unsigned base) {
static string box;
if (!value) {
auto x = box;
box.clear();
return string(x.rbegin(), x.rend());
}
box += to_string(value % base);
value /= base;
return fn(value, base);
}
int main() {
unsigned base, value;
cin >> base >> value;
auto result = fn(value, base);
cout << value << "(10)=" << result << "("<< base << ")\n";
system("pause > nul");
}
Объяснение: