75862024-01-09 20:58:36ananászAutókódoláscsharpElfogadva 50/5028ms23500 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ÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/028ms20504 KiB
2Elfogadva0/028ms21072 KiB
3Elfogadva2/228ms21472 KiB
4Elfogadva2/228ms21560 KiB
5Elfogadva2/228ms21756 KiB
6Elfogadva2/227ms22328 KiB
7Elfogadva2/228ms22624 KiB
8Elfogadva4/428ms23088 KiB
9Elfogadva4/428ms23068 KiB
10Elfogadva4/428ms23296 KiB
11Elfogadva4/428ms22920 KiB
12Elfogadva4/428ms22744 KiB
13Elfogadva4/428ms23476 KiB
14Elfogadva4/428ms23124 KiB
15Elfogadva4/428ms22936 KiB
16Elfogadva4/428ms23500 KiB
17Elfogadva4/428ms23244 KiB