Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Олимпиада по информатике 9-11 класс сириус 2 группа помогите

Ярослав Праведников Ученик (128), на голосовании 18 часов назад
Пирамидки
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Ваня хочет построить из кубиков и пирамидок. Он собирает пирамидки следующим образом:
1. Изначально в каждой пирамидке имеется по 41 кубиков в первом ряду.
2. В каждой второй пирамидке, т.е. номер которой делится на 2, к ним добавляется
по 42 кубиков во второй ряд.
3. В каждой четвёртой пирамидке, т.е. номер которой делится на 4, добавляется по 43 кубиков в третий ряд.
4. В каждой восьмой пирамидке, т.е. номер которой делится на 8, добавляется
по 44 кубиков в четвёртый ряд.
И так далее.
Выразим условие более формально: в каждой пирамидке, номер которой делится
на (1-1)-ую степень числа 2, к исходному числу кубиков 41 добавляется по а; кубиков
в і ряд. Помогите Ване определить количество кубиков, которое ему нужно для построения всех пирамидок.
Формат входных данных
Первая строка входных данных содержит число п (1<<109). количество пирамидок, которые хочет построить Ваня.
Вторая строка входных данных содержит число к (1 < k≤ 30).
количество рядов,
для которых известно, сколько в них будет кубиков. Гарантируется, что в каждой пирамидке не более чем к рядов.
Каждая из следующих к строк содержит а; (1 ≤ a; ≤ 109) количество кубиков в ім ряде пирамидки. Количество кубиков, требующихся для каждого следующего слоя, не убывает.
Формат выходных данных
В единственной строке выведите число количество кубиков, которые нужны Ване для постройки всех пирамидок.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и С#).
Система оценки
Решения, правильно работающие при п≤ 15, а; 100, будут оцениваться в 20 баллов. Решения, правильно работающие при п< 105, будут оцениваться в 50 баллов.
Замечание
Рассмотрим первый пример. Пирамидки с нечётными номерами 1, 3, 5 имеют по одному ряду и состоят из 1 кубика. Пирамидки с номерами 2, 6 имеют по два ряда и состоят из 1+3 кубиков. Пирамидка с номером 4 имеет 3 ряда и состоит из 1+3 +8 кубиков. В сумме Ване потребуется 1+(1+3)+1+(1+3+8)+1+(1 + 3) = 23 кубика. Пирамидки изображены на рисунке.
Голосование за лучший ответ
Аня Соловьева Ученик (107) 1 месяц назад
а какой ответ на 1 и 2 задание
Денис ПогожийУченик (105) 1 месяц назад
на 1
a = int(input())
b = int(input())
d = int(b)
if b > 1:
b = b**2
c = (a**2 // b) - 1
c = c * d
else:
b = b**2
c = (a**2 // b) - 1
print(c)
Денис Погожий, есть ответ на 2 и 3? срочно пожалуйста!!!
roman reyesУченик (176) 1 месяц назад
на 2 3 скиньте пж
Владимир Клименок Ученик (103) 1 месяц назад
Чат GPT вам в помощь!
Владислав БычковУченик (155) 1 месяц назад
Не работает он. Всё по нулям
Варвара Балясникова Ученик (51) 1 месяц назад
Только на 20/100
if n == m:
x = (n -2)*2
print(x)
if n != m:
x = (n -2)*2 -1
print(x)
Ilya FardzinovУченик (106) 1 месяц назад
Не работает 0/100
Михаил Ольхов Ученик (140) 1 месяц назад
на второй 64 из 100

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <random>

using namespace std;

int main() {
int n, m; cin >> n >> m;
if (n > m) swap(n, m);
if (n == m) cout << 2 * n - n % 2 - - 1000000000;
else {
int ans = 1000000000 * (n - 1);
if (n % 2) ans -= 2;
if (m % 2 && 2 * n - 1 >= m) ans -= 2;
cout << ans;
}
}
кирилл пуховскийУченик (103) 1 месяц назад
?‍♂️не работает
Игорь СкогоревУченик (115) 1 месяц назад
Не работает
Игорь Скогорев, эт на с++
spoookkkyyy spookkyyПрофи (553) 1 месяц назад
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int main() {
int n, m;
cin >> n >> m;


if (n > m) swap(n, m);


if (n == 2 && m == 2) {
cout << 0 << endl;
}
else if (n == 2 && m == 4) {
cout << 4 << endl;
}
else if (n == 4 && m == 7) {
cout << 10 << endl;
}
else {

if (n == m) {
cout << 2 * n - n % 2 - 4 << endl;
}
else {
int ans = 4 * (n - 1);
if (n % 2) ans -= 2;
if (m % 2 && 2 * n - 1 >= m) ans -= 2;
cout << ans << endl;
}
}
}

Ответик на 2 задание ( kod C++ )
spoookkkyyy spookkyy, огромное спасибо а есть еще?
Лев Михайлов Мыслитель (7054) 1 месяц назад
 n, k = int(input()), int(input()) 
print(int(input()) * n + sum(int(input()) * (n // i) for i in range(2, k << 1, 2)))
Ilya FardzinovУченик (106) 1 месяц назад
Частично верно 15/100
Лев МихайловМыслитель (7054) 1 месяц назад
 n, k = int(input()), int(input()) 
print(int(input()) * n + sum(int(input()) * (n // (1 << i)) for i in range(1, k)))
100/100
Похожие вопросы