3631 2023. 03. 01 12:27:18 váááá Autókódolás csharp Részben helyes 48/50 28ms 24008 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace auto
{
    class Program
    {
        static string DecimalToBinary(long num)
        {
            string binary = "";
            long remainder;
            while (num > 0)
            {
                remainder = num % 2;
                binary = remainder + binary;
                num /= 2;
            }
            return binary;
        }
        static long BinaryToDecimal(string binary)
        {
            long decimalNum = 0;
            int power = 0;
            for (int i = binary.Length - 1; i >= 0; i--)
            {
                int bit = binary[i] - '0';
                decimalNum += bit * (long)Math.Pow(2, power);
                power++;
            }
            return decimalNum;
        }
        static void Main(string[] args)
        {
            long szam = Convert.ToInt64(Console.ReadLine());
            string bin = DecimalToBinary(szam);
            bool siker = false;
            string kisbin = "";
            if (szam != 0)
            {
                for (int i = bin.Length - 1; i > 0; i--)
                {
                    if (bin[i] == '0' && bin[i - 1] == '1')
                    {
                        for (int j = 0; j < bin.Length; j++)
                        {
                            if (j != i && j != i - 1) kisbin += bin[j];
                            if (j == i && j != i - 1) kisbin += '1';
                            if (j != i && j == i - 1) kisbin += '0';
                            siker = true;
                        }
                        if (siker) i = -32;
                    }
                }
                long kiszam = -1; ;
                if (siker)
                {
                    if (kisbin[0] == '0')
                    {
                        string tempbin = kisbin;
                        kisbin = "";
                        for (int i = 1; i < tempbin.Length; i++)
                        {
                            kisbin += tempbin[i];
                        }
                    }
                    kiszam = BinaryToDecimal(kisbin);
                }
                Console.WriteLine(kiszam);
                int valt = -1;
                for (int i = bin.Length - 1; i > 0; i--)
                {
                    if (bin[i] == '1' && bin[i - 1] == '0')
                    {
                        valt = i - 1;
                        break;
                    }
                }
                int nul = 0, egy = 0;
                for (int i = valt + 2; i < bin.Length; i++)
                {
                    if (bin[i] == '1') egy++;
                    if (bin[i] == '0') nul++;
                }
                string nagybin = "";
                if (valt != -1)
                {
                    for (int i = 0; i < bin.Length; i++)
                    {
                        if (i > valt + 1)
                        {
                            if (nul != 0)
                            {
                                nagybin += '0';
                                nul--;
                            }
                            else
                            {
                                nagybin += '1';
                            }
                        }
                        else if (i < valt)
                        {
                            nagybin += bin[i];
                        }
                        else if (valt == i)
                        {
                            nagybin += '1';
                        }
                        else
                        {
                            nagybin += '0';
                        }
                    }
                    Console.WriteLine(BinaryToDecimal(nagybin));
                }
                else
                {
                    nul = 0;
                    egy = 0;
                    for (int i = 0; i < bin.Length; i++)
                    {
                        if (bin[i] == '1') egy++;
                        if (bin[i] == '0') nul++;
                    }
                    egy--;
                    nagybin += "10";
                    for (int i = 0; i < bin.Length - 1; i++)
                    {

                        if (nul != 0)
                        {
                            nagybin += '0';
                            nul--;
                        }
                        else
                        {
                            nagybin += '1';
                        }
                    }
                    Console.WriteLine(BinaryToDecimal(nagybin));
                }
            }
            else
            {
                Console.WriteLine(-1);
                Console.WriteLine(-1);
            }
            Console.ReadKey();
        }
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 48/50
1 Elfogadva 0/0 28ms 20600 KiB
2 Elfogadva 0/0 27ms 21208 KiB
3 Elfogadva 2/2 26ms 21144 KiB
4 Elfogadva 2/2 26ms 21688 KiB
5 Részben helyes 1/2 26ms 22260 KiB
6 Részben helyes 1/2 26ms 22704 KiB
7 Elfogadva 2/2 26ms 22472 KiB
8 Elfogadva 4/4 26ms 23012 KiB
9 Elfogadva 4/4 26ms 23032 KiB
10 Elfogadva 4/4 26ms 22988 KiB
11 Elfogadva 4/4 26ms 22832 KiB
12 Elfogadva 4/4 26ms 23036 KiB
13 Elfogadva 4/4 26ms 23648 KiB
14 Elfogadva 4/4 26ms 23580 KiB
15 Elfogadva 4/4 26ms 23152 KiB
16 Elfogadva 4/4 28ms 23576 KiB
17 Elfogadva 4/4 28ms 24008 KiB