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 |