PP0504D - Reprezentacja liczb typu float

0

Witajcie,
zabawiam się czasami ze spojem i tak trafiłem na zadanie w zasadzie banalne.
Link:

Konwert liczby float na liczbe hex - w C# praktycznie dwie linijki kodu, następnie zamiana na małe litery i zapis pojedynczych zer.
Program poniżej idealnie wpisuje się w wyniki przykładowe, dodatkowo testowałem jeszcze na kilkudziesięciu wrażliwych liczbach i wydaje się, że wyniki są poprawne.
Sędzia jednak cały czas zwraca błąd i trochę jestem zdegustowany :P

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Reprezentacja_liczb_typu_float
{
    class Program
    {
        static void printfloat(float x)
        {
            byte[] bytes = BitConverter.GetBytes(x);
            int i = BitConverter.ToInt32(bytes, 0);

            string s = Regex.Replace(i.ToString("X"), ".{2}", "$0 "); ;

            Console.WriteLine(RefactorHex(s));
        }

        static void Main(string[] args)
        {
            int ile = int.Parse(Console.ReadLine());

            List<float> wynikKoncowy = new List<float>();
            for (int i = 0; i < ile; i++)
            {
                wynikKoncowy.Add(float.Parse(Console.ReadLine().Replace(',', '.')));
            }

            foreach (var item in wynikKoncowy)
            {
                printfloat(item);
            }

            Console.ReadLine();
        }

        private static string RefactorHex(string s)
        {
            string wynikKoncowy = "";

            foreach (var item in s.Split(' '))
            {
                string b = item;
                if (item == "00")
                {
                    b = "0";
                }

                wynikKoncowy += b + " ";

            }

            if (s == "0")
                wynikKoncowy = "0 0 0 0";
            return wynikKoncowy.TrimEnd().ToLower();
        }
    }
}

Jakieś pomysły? obstawiam, że jest tu ukryta jakaś drobna pierdoła....

0

Link: https://pl.spoj.com/problems/PP0504D/

Oczywiście w kodzie wyżej usunąłem też Console.ReadLine(); żeby nie zatrzymywać konsoli.

0

Program poniżej idealnie wpisuje się w wyniki przykładowe, dodatkowo testowałem jeszcze na kilkudziesięciu wrażliwych liczbach i wydaje się, że wyniki są poprawne.

Wejście:
5
1 
-1 
0 
123.125 
-345

Wyjście:
3f 80 0 0 
bf 80 0 0 
0 0 0 0 
42 f6 40 0 
c3 ac 80 0 

Twoje:

3f 80 0 0
bf 80 0 0
0 0 0 0
47 f0 7a 80 <---
c3 ac 80 0
0
WeiXiao napisał(a):

Program poniżej idealnie wpisuje się w wyniki przykładowe, dodatkowo testowałem jeszcze na kilkudziesięciu wrażliwych liczbach i wydaje się, że wyniki są poprawne.

Wejście:
5
1 
-1 
0 
123.125 
-345

Wyjście:
3f 80 0 0 
bf 80 0 0 
0 0 0 0 
42 f6 40 0 
c3 ac 80 0 

Twoje:

3f 80 0 0
bf 80 0 0
0 0 0 0
47 f0 7a 80 <---
c3 ac 80 0

Sprawdziłem raz jeszcze. Wynik poniżej:

stdin kopiuj
5
1
-1
0
123.125
-345
stdout kopiuj
3f 80 0 0
bf 80 0 0
0 0 0 0
42 f6 40 0
c3 ac 80 0

0

https://ideone.com/BeRV84

jak blad daje sedzia? bo jedynie zgaduje ze przekroczony czas (za wolno dziala)

0
fasadin napisał(a):

https://ideone.com/BeRV84

jak blad daje sedzia? bo jedynie zgaduje ze przekroczony czas (za wolno dziala)

Daje błędną odpowiedź właśnie. Co najciekawsze znalazłem odpowiedź też na kanale u tego gościa

Wykonałem program kropka w kropę, działa też dobrze a po wrzuceniu na SPOJ mam błędną odpowiedź :| a na powyższym filmie dokładnie ten sam kod przechodzi :)

Za to kocham programowanie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1