SHOW:
|
|
- or go back to the newest paste.
1 | using System; | |
2 | ||
3 | class ChangeEvenBits | |
4 | { | |
5 | static void Main() | |
6 | { | |
7 | int numberOfInputs = int.Parse(Console.ReadLine()); | |
8 | ||
9 | int biggestNumber = Int32.MinValue; | |
10 | ||
11 | for (int i = 0; i < numberOfInputs; i++) | |
12 | { | |
13 | int number = int.Parse(Console.ReadLine()); | |
14 | biggestNumber = Math.Max(number, biggestNumber); | |
15 | } | |
16 | ||
17 | int numberToChange = int.Parse(Console.ReadLine()); | |
18 | ||
19 | int bitsToChange = getBitsCount(biggestNumber); | |
20 | ||
21 | int bitsChanged = 0; | |
22 | ||
23 | for (int j = 0; j < bitsToChange; j++) | |
24 | { | |
25 | int currentBit = (numberToChange >> j * 2) & 1; | |
26 | int mask = 1 << j * 2; | |
27 | ||
28 | if (currentBit == 0) | |
29 | { | |
30 | bitsChanged++; | |
31 | numberToChange = numberToChange | mask; | |
32 | } | |
33 | ||
34 | } | |
35 | ||
36 | Console.WriteLine(numberToChange); | |
37 | Console.WriteLine(bitsChanged); | |
38 | ||
39 | } | |
40 | ||
41 | public static int getBitsCount(int number) | |
42 | { | |
43 | - | int count = 0; |
43 | + | int count = 0; |
44 | ||
45 | - | if (number == 0) |
45 | + | |
46 | { | |
47 | - | return 1; |
47 | + | |
48 | number = number >> 1; | |
49 | } | |
50 | ||
51 | return Math.Max(1, count); | |
52 | } | |
53 | } |