1 / 18
Jul 2016

Witam :slight_smile: Mam problem z poniższym zadaniem, testy dają dobre wyniki, ale spoj wypisuje "Błędną odpowiedź". Mogłabym prosić o pomoc?

kod

  • created

    Jul '16
  • last reply

    Jan '24
  • 17

    replies

  • 1.9k

    views

  • 8

    users

  • 5

    likes

  • 3

    links

Z treści zadania:

"Uwaga: Dane wejściowe będą tak dobrane, aby wynik był liczba całkowitą."

Przy twoim sposobie obliczania, prawdopodobnie po drodze mogą pojawiać się błędy zaokrągleń [dzielenie całkowitoliczbowe] i dlatego WA [wrong answer].

2 years later

Cześć, postanowiłem spróbować rozwiązać to zadanie w c#, niestety otrzymuje błąd wykonania cały czas. Ktoś ma jakiś pomysł?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    class Program
    {
        static void Main(string[] args)
        {
            int t = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < t; i++)
            {
                double v1 = Convert.ToDouble(Console.ReadLine());
                double v2 = Convert.ToDouble(Console.ReadLine());
                if (v1 == 0 && v2 == 0) { Console.WriteLine("0"); }
                else
                {
                    Console.WriteLine(((2 * v1 * v2) / (v1 + v2)).ToString());
                }
            }
        }
    }
}
  1. Prędkości v1 i v2 podane są dla każdego testu w jednej linii.
  2. Do tego zadania wystarczy typ int.

Racja, testowałem to w kompilatorze podając wartości po kolei, natomiast podane w jednej linii wyrzucają format exception.

Właściwie to mógłbym je wczytać jako jeden string, później rozdzielić metodą split i przekonwertować na tablice dwóch intów, ale to dosyć skomplikowana opcja jak na tak łatwy przykład. Powinno dać się to zrobić jakoś jakoś prościej…

Ktoś ma pomysł, jak to uprościć?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace spoj
{
class Program
{
    static void Main(string[] args)
    {
        int[] V = new int[2];
        int t = Convert.ToInt32(Console.ReadLine());
        for (int i = 0; i < t; i++)
        {
            string input = Console.ReadLine();
            int j = 0;
            foreach (string v in input.Split(' '))
            {
                V[j] = Convert.ToInt32(v);
                j++;
            }
            if (V[0] == 0 && V[1] == 0) { Console.WriteLine("0"); }
            else
            {
                Console.WriteLine(((2 * V[0] * V[1]) / (V[0] + V[1])).ToString());
            }
        }
    }
}
}
1 year later

Dzień dobry,
Proszę o wyjaśnienie problemu z zadaniem https://pl.spoj.com/problems/VSR/.

Zrobiłem najprostszy kod dla C++ i oczywiście wszystko działa
C++ 1xfor
https://ideone.com/3Swx4Y

Próbowałem to samo na Java, nawet kopiując czyjeś rozwiązanie i za każdym razem ideone.com pokazuje prawidło a na spoj.com niestety “Przekroczono limit czasu”.
Java Scanner
https://ideone.com/KqbLs1R
Java Scanner 1xfor
https://ideone.com/sh9Hha
Java BufferReader
https://ideone.com/xOyMgV

3 years later

jak to zrobiłeś że widać samą Jave?
btw napisałem do człowieka któremu jako ostatniemu przechodził test, podesłał kod, działa pięknie ale muszę go jeszcze linia po linii przeanalizować,

Edit, dobra już wiem, dodałem lang=JAVA na koniec adresu, dzięki.
Edit, ale widać też, że kiedyś Javka działała tutaj szybciej,
dla kilku sprawdzonych problemów z działu ‘łatwe’ najlepsze czasy uzyskiwano przed 2016, później już coraz wolniej :wink:
albo programiści coraz gorsi.

Zgadzam się. Kiedyś to byli programiści, nie to co teraz… :slight_smile:
Kilkanaście lat temu widziałem w Delcie taki satyryczny rysunek:
Siedzą sobie dwaj starzy astronomowie na ławeczce i jeden z nich mówi - Kiedyś to kwazary świeciły mocniej.