[Homework] Programming Basics - Operators Expressions and Statements - Problem {20} - Bits Up
Здравейте, имам явно някакъв проблем с задачата. Гледах решения на колеги, но нито едно не съвпада с моето. Ето и кода ми тук.
Проблемът е че така написана програмата работи идеално ако задам стойност на "n" 2 , но ако задам по-голяма стойност се губи някъде из кода и не променя битовете, които трябва.
Някой ако може да ми каже къде съм сбъркал ще съм му много благодарен.
Здравей Галя,
това решение е наистина много, много по-кратко и елегантно, и за да даде пълните 100 точки в judge има нужда от една малка добавка:
От една страна counterBits % step == 1, всъщност обхваща случая counterBits == 1, защото например 1 % 4 = 1
Случаят, който допълнително е необходимо да се обхване, е когато step = 1, защото за всяко число ще е вярно
number % 1 = 0; и никога няма да има bits-up-ване на която и да било позиция.
По тази причина авторското решение добавя още едно изискване:
if ((index % step == 1) || (step == 1 && index > 0))
В случая (step == 1 && index > 0) ще променяме на 1-ца битовете на абсолютно всяка позиция с изключение на нулевата.
Може да тестваш тук
Благодаря, за допълнението. Бях забравила за това изключение и сега всичко е точно :)