eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Сірникова модель

опубліковано 15.06.20, 11:21:00

Нам потрібно знайти НАЙМЕНШЕ число сірників якщо буде модель 3 х 3 х 3 (блок) то в ній буде менше сірників ніж в моделі 27 х 1 х 1(рядок/колона)

опубліковано 24.06.20, 20:16:40

Наименьшее число рёбер получится только у формы приближённой к кубу. Я решал так:

  1. Вычислил кубоподобный элемент (сначала максимально возможный куб, а потом прибавлял к наименьшему из измерений по "пластине" пока это возможно было), прибавил рёбра

  2. Посчитал, из тех кубов, что остались, оптимальную прямоугольную форму (посчитал рёбра и прибавил, отнял ребра соприкосновения с "кубом")

  3. Досчитал остальные кубики по простой формуле и отнял соприкосновения в двух измерениях. Эту суму прибавил.

Может кто поймёт и это поможет.

опубліковано 17.12.20, 10:50:05

Я не понимаю условие задачи. По рисунку я вижу 20 спичек для 3 кубиков. Либо тут рисунок не в тему, либо в условии что-то не то. Помогите понять, пожалуйста.

опубліковано 05.03.21, 14:53:50

Бредовая задача. Точнее условие не полное. Если судить по рисунку и строить кубы в ряд то решение простое: x = n * 8 + 4 Но ели кубов 20 и расположены они: - 5 по горизонтали - 5 по вертикали - 10 по диагонали Как решить такую задачу где условие неизвестно и каждый раз может быть рандомные числа по всех положениях.

опубліковано 27.07.21, 23:45:20

я обрадовался, когда мой код был засчитан на 100% процентов с первой попытки (#9174130), но позже почему-то задумался и пришел к выводу, что тестов недостаточно и система не узнала, что для некоторых значений числа кубиков программа предлагает НЕ минимальное количество спичек. вот как я "строил" конструкцию из 33 кубиков? сначала куб 3 * 3 * 3 (в нем, как легко понять, 27 маленьких кубиков), а оставшиеся 6 добавлял так. повернем большой куб какой-нибудь гранью к себе и пускай кубики, которые мы видим, пронумерованы как на NumPad`е: слева направо, снизу вверх от 1 до 9. клеил кубики на номера 1, 4, 2, 5, 7, 3 в таком порядке. получается, чтобы образовать последний, 33-ий кубик, понадобилось 5 спичек (так как у него по общей грани с 2-я кубиками: тем, который наклеен на цифру 2, и кубиком под номером 3). но ведь было бы рациональней наклеить его на 8-ой кубик! (в таком случае он имел бы по общей грани с целыми тремя кубиками: наклеенными на цифры 5, 7 и кубиком под номером 8). можно было бы сэкономить две спички! и таких примеров полно: для 42, 54 и т. д. я изменил алгоритм, по-прежнему не уверен до конца, что программа сейчас выдает действительно минимальное число спичек. но снова 100%

опубліковано 24.10.21, 02:08:31

Все тесты прохожу, кроме 12. Мне кажется там проверка на переполнение, но я не знаю, как защититься от переполнения?

опубліковано 14.02.22, 18:06:20

объясните как нужно делать

опубліковано 11.05.22, 03:44:37

what does this mean? every number of problem does not exceed 2 ??

опубліковано 06.06.22, 12:47:49

"Every number of problems does not exceed `2'" What does this sentence mean ? I don't get it

опубліковано 01.08.22, 21:55:25

Tests:

№  - Input
01 - 1
02 - 3
03 - 343
04 - 4
05 - 150
06 - 7
07 - 22
08 - 13
09 - 521
10 - 926
11 - 229
12 - 108
13 - 2
опубліковано 22.10.22, 08:41:07

!!!

опубліковано 03.12.22, 13:17:33

1)let num = Number( prompt("Ведіть число кубіків:")) console.log("Сирників в кубіку " + (12*num)) 2)let num = Number( prompt("Ведіть число кубіків:")) if (num <= 1) console.log("Сирників в кубіку " + (12*num)) if (num > 1) console.log("Сирників в кубіках " + (12*num)) Допоможіть?

опубліковано 23.01.23, 16:55:32

там наверное можно использовать библиотеку smath.Там есть готовые функции корня квадратного и кубового.Если у числа есть целый корень,то что-то что-то, а если есть куб ,то что-то,иначе кубики стоят вряд?

опубліковано 31.01.23, 23:32:40

can someone explain task?

опубліковано 17.10.23, 23:47:22

Сделал спустя 8 часов, под музыку The House of the Rising Sun. Всем советую делать самим и вначале подумать, как правильно строить фигуру из кубиков, а лишь меньшая часть - написать код. ( потратил уйму времени ибо писал правильный код к неправильному алгоритму решения ). Всем удачи!

опубліковано 04.01.24, 11:59:06

include <cstdlib>

include <iostream>

include <cmath>

using namespace std;

int main() { double n, k=1, i=0, r, r1; cin>>n; for (; k<n ; ++i) k=pow(i+1,3); if (!i) i++;

if ((i-1)*(i-1)*(i-1)<n && n<=(i-1)*(i-1)*i)
{
    r=3*(i-1)*pow(i,2);                                 // 3n(n+1)^2
    n=n-pow(i-1,3);            
}
else
    if ((i-1)*(i-1)*i<n && n<=(i-1)*i*i)
    {
        r = 3*pow(i-1,3) + 9*pow(i-1,2) + 7*(i-1) + 1; // 3n^3 + 9n^2 + 7n + 1
        n=n-pow(i-1,2)*i;
    }
    else
        if ((i-1)*i*i<n && n<=i*i*i )
        {
            r = 3*(pow(i,3) + pow(i,2))-i-1;            // 3n^3 + 3n^2 -n-1
            n=n-pow(i,2)*(i-1);
        }
        else
        {
            cout << i << "???";
            return 0;
        }
for (int i1=1; n; i1+=2)
{
    for (int i2=0; i2<i1 && n; i2++, n--)
    {
        if (i1 == 1) r=r+8;    
        else
            if (i2 == 0 || i2 == i1/2) r=r+5;
            else r=r+3;                    
    }

}
cout << r << endl;
return 0;

}

опубліковано 01.02.24, 13:59:21

include <bits/stdc++.h>

using namespace std; int main() {

double n, k=1, i=0, r, r1; cin>>n; for (; k<n ; ++i) k=pow(i+1,3); if (!i) i++;
if ((i-1)*(i-1)*(i-1)<n && n<=(i-1)*(i-1)*i){
    r=3*(i-1)*pow(i,2);
    n=n-pow(i-1,3);
}
else
    if ((i-1)*(i-1)*i<n && n<=(i-1)*i*i){
        r = 3*pow(i-1,3) + 9*pow(i-1,2) + 7*(i-1) + 1;
        n=n-pow(i-1,2)*i;
    }
else
    if ((i-1)*i*i<n && n<=i*i*i ){
        r = 3*(pow(i,3) + pow(i,2))-i-1;
        n=n-pow(i,2)*(i-1);
    }
    else{
        cout << i << "???";
        return 0;
    }
for (int i1=1; n; i1+=2){
    for (int i2=0; i2<i1 && n; i2++, n--){
        if (i1 == 1)
            r=r+8;
    else
        if (i2 == 0 || i2 == i1/2)
            r=r+5;
        else
            r=r+3;
    }

}
cout << r << endl;

}

опубліковано 01.04.24, 11:25:43

include <bits/stdc++.h>

using namespace std; int main() {

double n, k=1, i=0, r, r1; cin>>n; for (; k<n ; ++i) k=pow(i+1,3); if (!i) i++; if ((i-1)(i-1)(i-1)<n && n<=(i-1)(i-1)i){ r=3(i-1)pow(i,2); n=n-pow(i-1,3); } else if ((i-1)(i-1)i<n && n<=(i-1)ii){ r = 3*pow(i-1,3) + 9*pow(i-1,2) + 7*(i-1) + 1; n=n-pow(i-1,2)*i; } else if ((i-1)ii<n && n<=iii ){ r = 3*(pow(i,3) + pow(i,2))-i-1; n=n-pow(i,2)*(i-1); } else{ cout << i << "???"; return 0; } for (int i1=1; n; i1+=2){ for (int i2=0; i2<i1 && n; i2++, n--){ if (i1 == 1) r=r+8; else if (i2 == 0 || i2 == i1/2) r=r+5; else r=r+3; }

} cout << r << endl; }