Match’s model
Нам потрібно знайти НАЙМЕНШЕ число сірників якщо буде модель 3 х 3 х 3 (блок) то в ній буде менше сірників ніж в моделі 27 х 1 х 1(рядок/колона)
Наименьшее число рёбер получится только у формы приближённой к кубу. Я решал так:
Вычислил кубоподобный элемент (сначала максимально возможный куб, а потом прибавлял к наименьшему из измерений по "пластине" пока это возможно было), прибавил рёбра
Посчитал, из тех кубов, что остались, оптимальную прямоугольную форму (посчитал рёбра и прибавил, отнял ребра соприкосновения с "кубом")
Досчитал остальные кубики по простой формуле и отнял соприкосновения в двух измерениях. Эту суму прибавил.
Может кто поймёт и это поможет.
Я не понимаю условие задачи. По рисунку я вижу 20 спичек для 3 кубиков. Либо тут рисунок не в тему, либо в условии что-то не то. Помогите понять, пожалуйста.
Бредовая задача. Точнее условие не полное. Если судить по рисунку и строить кубы в ряд то решение простое: x = n * 8 + 4 Но ели кубов 20 и расположены они: - 5 по горизонтали - 5 по вертикали - 10 по диагонали Как решить такую задачу где условие неизвестно и каждый раз может быть рандомные числа по всех положениях.
я обрадовался, когда мой код был засчитан на 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%
Все тесты прохожу, кроме 12. Мне кажется там проверка на переполнение, но я не знаю, как защититься от переполнения?
объясните как нужно делать
what does this mean? every number of problem does not exceed 2 ??
"Every number of problems does not exceed `2'" What does this sentence mean ? I don't get it
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
!!!
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)) Допоможіть?
там наверное можно использовать библиотеку smath.Там есть готовые функции корня квадратного и кубового.Если у числа есть целый корень,то что-то что-то, а если есть куб ,то что-то,иначе кубики стоят вряд?
can someone explain task?
Сделал спустя 8 часов, под музыку The House of the Rising Sun. Всем советую делать самим и вначале подумать, как правильно строить фигуру из кубиков, а лишь меньшая часть - написать код. ( потратил уйму времени ибо писал правильный код к неправильному алгоритму решения ). Всем удачи!
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;
}
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;
}
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; }