[ExamPreparation] - 12 July 2015 - Решения
Здравейте, колеги.
Ето и кода, който обещах да ви изпратя. Първите три решения са на Трифон : )
Успех!
Здравейте, колеги.
Ето и кода, който обещах да ви изпратя. Първите три решения са на Трифон : )
Успех!
Здравейте,
можете ли да ми дадете малко разяснение на задачата, сигурно 1000 пъти прочетох условието и гледах как е решена, обаче нито в условието, нито в кода мога да се ориентирам. Примерно едно нещата, което не мога да разбера е използването на масив в побитовите операции, не мога да му хвана самия начин на изпълнение. Много ще съм благодарен за помоща.
Поздрави
За 5-та задача става въпрос, вероятно? В побитовите операции не използвам масив, масив има единствено в началото, защото така идват числата от джъджа. Примерно 19 29 39 49 идват на един ред, разделени със спейс, аз използвам .Split(), за да разкара спейс-а и да ми създаде масив, от който мога да взимам елементите един по един. Масивът е с дължина от 4, където числото 19 е на позиция 0, а числото 49 на позиция 3 (дължината на масива минус едно). След това във фор-цикъла увеличавам итератора с 2, вместо с 1. Защо го правя - така мога да взимам числата по двойки, както и условието на задачата изисква. Първо ще вземе числата на позиция 0 и 0 + 1, това са 19 и 29, след това ще се увеличи с 2 (i += 2) и ще вземе следващата двойка - на позиции 2 и 2 + 1. Друг масив не виждам да има.
Да, да много ти благодаря, наистина много ми помогна, жалко, че не мога да ти дам 5 like :) Можеш ли, да ми разкажеш за действието на този цикъл, всъщност как ги сравнява самите числа ( for (int bitIndex = 0; bitIndex < 63; bitIndex += 2) ) ?
Да, увеличава се с +2, за да взима само битовете на четни позиции (0, 2, 4, ... 62), така е по условие на задачата. Как взима самите битове - на този линк http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/ има подробни обяснения за всякакви битови операции - разгледай го. Накратко - мести цялото число колкото позиции надясно е необходимо и го сравнява с числото 1. Ако резултатът е 0 - значи битът е бил 0, респективно и при бит, който е единица. След това в условието на if-a проверяваме дали битовете са различни - само тогава се налага да ги променяме.