Exam 6 march - Draw Fort
Здравейте, някой може ли да предложи решение без формулата от втория ред, честно казано на предстоящия изпит в Събота, няма как да се сетя за тази формула var ff = n*2 - 4 - 2*(n/2); .....
http://pastebin.com/aYVA5yVv
Здравейте, някой може ли да предложи решение без формулата от втория ред, честно казано на предстоящия изпит в Събота, няма как да се сетя за тази формула var ff = n*2 - 4 - 2*(n/2); .....
http://pastebin.com/aYVA5yVv
Ами разковничето в този тип задачи за чертане на фигури по конзолата е именно да се сетиш за формулата, чрез която ще пресметнеш съотношенията при различните стойности за n! Може би без формула, ще е да начертаеш всички възможни варианти един по един.
Ето и друг вариант, но пак има формула, макар и за мен малко по-проста (пак казвам за мен).
namespace _999.DrawFort
{
using System;
public class Program
{
public static void Main()
{
int n = int.Parse(Console.ReadLine());
int width = 2 * n;
int row = n / 2; // row -> ^
Console.WriteLine(@"/{0}\{1}/{0}\", new string('^', row), new string('_', width - ((2 * row) + 4)));
}
}
}
Не съм дописал цялата задача, мисля че на там е вече лесно .
Най-лесният начин да стигнеш до формулата при тези задачи е да си преброиш символите на даден ред.
Формулата за първия, последния и за пред-предпоследния ред се извежда с просто изваждане.
Знаем, че крепостта е широка 2 * n.
Знаем,че всяка от двете колони е с ширина n/2 --> 2 * n - 2 * (n/2).
От наклонените на следващия ред виждаме, че има 4 позиции, които трябва да изключим от търсените --> 2*n - 4 - 2*(n - 2).
Остава да прецениш къде какъв символ да поставиш и задачата е решена.
Надявам се, че успях да ти помогна :)
Благодаря !
Не е задължително да използваш сложни формули. Можеш да кажеш примерно ако n е по-голямо от 4 мида да е n/2, ако е по- малко от 4 мида е 0. И така при 5 ще ти върне 2 мид а при 8 - 4 мид, както е по условие. Така ще ти работи коректно, просто ще стане малко по-дълъг кодът.
ДА, Благодаря !
Да не отварям нова тема, първа задача от същия изпит:
using System;
namespace P1.Training_Lab
{
class Program
{
static void Main()
{
var width = double.Parse(Console.ReadLine());
var height = double.Parse(Console.ReadLine());
var widthInCm = width * 100;
var heightInCm = height * 100;
var biura = (heightInCm - 100) / 70;
Console.WriteLine(Math.Round(biura));
var rows = widthInCm / 120;
Console.WriteLine(Math.Round(rows));
var result = (biura * rows) -3;
Console.WriteLine(Math.Round(result));
}
}
}
При вход 15; 8.9 ми вади за бюра 11 и за редове 12, умножавам ги и ми давa 142, а трябва да е 132 и да извади 3.
Друг вариант за който аз се сетих и най- важното е и че работи е: count-a да е n - 4 и съответно, ако е нечетно число да го увеличиш с едно:
int count = n - 4;
if (n % 2 != 0)
{
count++;
}
Вярно е, работи, но си е по- добре с другия вариант, първо че спестяваш място, второ, логиката е много по- точна! :)
Lescet,
Трябва да закръглиш " biura " и " rows " с Math.Truncate или Math.Round. на изхода трябва да изведеш само крайния резултат, така че ги изтрии другите Console.WriteLine, защото ще ти даде грешка в Judge. също може да съкратиш var widthInCm = width * 100; и var heightInCm = height * 100; като ги запишеш директно горе ето така: var width = double.Parse(Console.ReadLine()) * 100; var height = double.Parse(Console.ReadLine()) * 100;
Колеги и аз днеска я решавах тази задача и не се бях сетил за въпросната формула. Докарах нещата да излизат както са в примерите за n = 3,4,5 и 8 и си мислех, че всичко е както трябва ( това с този код http://pastebin.com/s0bTQB8Q ), обаче я пускам в judge и ми дава 30/100 (явно работи само за исканите примерни в условието, обаче когато n>8 в middle се бъркат нещата). Гледам даже, че Nikola_Andreev го е предложил като вариант, обаче judge не го приема.
Иначе после като смених въпросната middle със "сложната"формула
( n*2 - 4 - 2*(n/2)) изкарва 100/100 ( http://pastebin.com/ZEKftyJC ).
Та въпроса ми е някой има ли идея дали първият код може да се преправи така, че и с него да се изкарат 100/100 точки или няма как.
няма такава идея ,. тя задачата затова е кофти ,. на предишния изпит аз се забатачих точно с такава формула ,. но без нея не можеш да я решиш : пробвайте брадвата https://judge.softuni.bg/Contests/Practice/Index/274#4
Ясно,значи просто е била малко по-сложна от другите. Иначе брадвата е елементарна, както имаше и други някакви, които решавах с една пеперуда или знак STOP и още, които са супер лесни. Иначе ето ми го решението на брадвата http://pastebin.com/GVn9jUY0 . Общо взето от изпитните задачи само крепостта ми се строи малко по-сложна.
Абе то е лесно вкъщи ,. и аз ги решавах всичките ама на изпита тази формула не ми дойде :)
При мен процедурата е първо да си съставям формулите, които присвоявам на съответните променливи (коментирани за улеснение): http://pastebin.com/WnBucxkv
Здравейте на всички. Ако някой все още следи тази темичка, моля за малко помощ. Judge ми дава 20т и не разбирам какво точно не му допада ; (. Това ми е кодът:
https://pastebin.com/pju2DTvJ
Направи така че долната част да се отпечатва заедно като горната, а не средните чертички да имат свой собствен ред. От това ти идва грешката