7586 2024. 01. 09 20:58:36 ananász Autókódolás csharp Elfogadva 50/50 28ms 23500 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace autokod
{
    class Program
    {
        static void Main(string[] args)
        {
            long szam = long.Parse(Console.ReadLine());
            List<int> szamjegyek = new List<int>();
            long szam2 = szam;
            int nulla = 0;
            while (szam2 > 0)
            {
                if (szam2 % 2 == 0)
                {
                    szamjegyek.Add(0);
                    nulla++;
                }
                else
                {
                    szamjegyek.Add(1);
                }
                szam2 = szam2 / 2;
            }
           
                szamjegyek.Add(0);
                List<int> szamjegyek2 = new List<int>(szamjegyek);
                //növelés
                int id = 0;
                int egyesdb = 0;
                while (id < szamjegyek.Count - 1 && !(szamjegyek[id] == 1 && szamjegyek[id + 1] == 0))
                {
                    if (szamjegyek[id] == 1)
                    {
                        egyesdb++;
                    }
                    id++;
                }
                szamjegyek[id] = 0;
                szamjegyek[id + 1] = 1;
                long nagyobb = 0;
                for (int i = 0; i < egyesdb; i++)
                {
                    szamjegyek[i] = 1;
                }
                for (int i = egyesdb; i < id; i++)
                {
                    szamjegyek[i] = 0;
                }
                for (int i = 0; i < szamjegyek.Count; i++)
                {
                    nagyobb += szamjegyek[i] * (long)Math.Pow(2, i);
                }

            //csökkentés
            long kisebb = 0;
            if (nulla == 0)
            {
                kisebb = -1;
            }
            else
            {


                id = 0;
                int nulladb = 0;
                while (id < szamjegyek2.Count - 1 && !(szamjegyek2[id] == 0 && szamjegyek2[id + 1] == 1))
                {
                    if (szamjegyek2[id] == 0)
                    {
                        nulladb++;
                    }
                    id++;
                }
                szamjegyek2[id] = 1;
                szamjegyek2[id + 1] = 0;
                for (int i = 0; i < nulladb; i++)
                {
                    szamjegyek2[i] = 0;
                }
                for (int i = nulladb; i < id; i++)
                {
                    szamjegyek2[i] = 1;
                }
                for (int i = 0; i < szamjegyek2.Count; i++)
                {
                    kisebb += szamjegyek2[i] * (long)Math.Pow(2, i);
                }
               
            } 
            Console.WriteLine(kisebb);
            Console.WriteLine(nagyobb);
            Console.ReadKey();
        }
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 28ms 20504 KiB
2 Elfogadva 0/0 28ms 21072 KiB
3 Elfogadva 2/2 28ms 21472 KiB
4 Elfogadva 2/2 28ms 21560 KiB
5 Elfogadva 2/2 28ms 21756 KiB
6 Elfogadva 2/2 27ms 22328 KiB
7 Elfogadva 2/2 28ms 22624 KiB
8 Elfogadva 4/4 28ms 23088 KiB
9 Elfogadva 4/4 28ms 23068 KiB
10 Elfogadva 4/4 28ms 23296 KiB
11 Elfogadva 4/4 28ms 22920 KiB
12 Elfogadva 4/4 28ms 22744 KiB
13 Elfogadva 4/4 28ms 23476 KiB
14 Elfogadva 4/4 28ms 23124 KiB
15 Elfogadva 4/4 28ms 22936 KiB
16 Elfogadva 4/4 28ms 23500 KiB
17 Elfogadva 4/4 28ms 23244 KiB