Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

t.316 avatar t.316 137 Точки

[Exam Problems] C# Basics - Problem{5} - Bit Builder

Здравейте, колеги.

Може ли някой да ми каже, защо това решение ми дава само 10 точки в Judge и как да го направя да работи коректно?

http://pastebin.com/FK1MvyrU

При примерните данни от условието работи коректно.

Видях авторското решение и знам, че задачата може да се реши по друг начин, но искам да знам как може да се направи и така.

Ето и линк към Judge:

https://judge.softuni.bg/Contests/Practice/Index/36#4

Тагове:
1
Programming Basics
KatyaMarincheva avatar KatyaMarincheva 572 Точки
Best Answer

Здравей Тодоре,

Докарах ти  решението до 100 точки, но имам още малко работа по него. Самото ти решение е много интересно, и честно казано аз самата съм решавала тази задача само със стринг, твоето решение е много добро като план.

Първото, което промених беше проверката за quit:

        while (true)
        {
            string input = Console.ReadLine();
            int position;
            if (input != "quit")
            {
                position = int.Parse(input);
            }
            else
            {
                break;
            }

            string command = Console.ReadLine();

И с това от 10, точките станаха 20.

Второто беше: flip командата, този код:result = ~(1 << position) & result; ти нулираше единички, но ако там има нула и искаш тя да стане единичка - това не се получаваше. Смених го на result = (1 << position) ^ result; и решението даде 70 точки.

Последните 30 точки ги получих като смених твоя код за командата "insert", с insert метода от авторското решение - т.е. има нещо неточно в "insert" кода ти, но още търся какво. Например дава разни отрицателни числа на output, когато judge очаква положителни.

Иначе - поздравления за подхода! Много интелигентно замислено, и с малко доизглаждане - както виждаш даде 100 точки :)

ЕДИТ: оказва се че и insert метода ти си е супер, имал е съвсем дребна грешка:

 това  long mask = 1 << position; трябва да се промени така:  long mask = (long)1 << position;

Иначе по подразбиране 1 е int, и 1 << position си става отрицателно още преди да се присвои на long mask.

С това последно уточнение решението ти дава 100 точки в judge със съвсем собствени методи :)

0
18/06/2015 16:07:04
t.316 avatar t.316 137 Точки

Благодаря Катя!

Много се радвам, че се получава и така задачата.

1
18/06/2015 16:32:19
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Поздравления за идеята! - иначе дребни уточнения по кода в началото е нормално да се налагат.

-1
t.316 avatar t.316 137 Точки

Много благодаря!

Сега се сетих да попитам дали е разрешено по време на изпита да копирам и използвам част от тази задача (или от някоя друга), която съм решавал и имам на лаптопа си. Примерно, ако част от задачата ми на изпита е да променя бита на дадена позиция да си копирам flip.

 

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.