SPOJ obżartuchy

0

Witam,

mam problem z zadaniem ze Spoja obżartuchy https://pl.spoj.com/problems/GLUTTON/
Mamy tutaj taką informację:

Sytuację utrudnia fakt, że ciastka w sklepie sprzedawane są w pudełkach o stałej wielkości, a nie na sztuki - przez to być może trzeba będzie kupić trochę więcej ciastek niż zostanie zjedzonych.

Ale przy drugim przykładzie inputu wynik wyjdzie 2.0084269662921348, co u mnie w programie zaokrągli do 3, a na spoju zostaje 2. O co tu chodzi? :P

Mój kod:

using System;

namespace ConsoleApp39
{
    class Program
    {
        static void Main(string[] args)
        {
            const int doba = 86400;
            int i = Convert.ToInt32(Console.ReadLine());
            double suma = 0, res;

            while (i > 0)
            {
                int n = Convert.ToInt32(Console.ReadLine());
                int m = Convert.ToInt32(Console.ReadLine());

                while (n > 0)
                {
                    double c = Convert.ToDouble(Console.ReadLine());
                    res = Math.Ceiling(doba / c);
                    suma += res;
                    n--;
                }

                suma /= m;
                suma = Math.Ceiling(suma);
                Console.WriteLine(suma);
                suma = 0;
                i--;
            }

            Console.ReadKey();
        }
    }
}
3
 kiedy to uczestnikowi nie wolno napocząć ciastka jeśli wie, że nie zdąży go zjeść przed końcem doby

Twój kod się do tego nie stosuje.

0
neves napisał(a):
 kiedy to uczestnikowi nie wolno napocząć ciastka jeśli wie, że nie zdąży go zjeść przed końcem doby

Twój kod się do tego nie stosuje.

Zmieniłem, ale i tak mam błąd wykonania :O
A zmiana to w sumie tylko:

res = Math.Floor(doba / c);
1

zauważ że n i m wczytujesz tak jakby były w oddzielnych liniach, a one są w tej samej lini

string[] nm = Console.ReadLine().Split(' ');
int n = Convert.ToInt32(nm[0]);
int m = Convert.ToInt32(nm[1]);
0
neves napisał(a):

zauważ że n i m wczytujesz tak jakby były w oddzielnych liniach, a one są w tej samej lini

string[] nm = Console.ReadLine().Split(' ');
int n = Convert.ToInt32(nm[0]);
int m = Convert.ToInt32(nm[1]);

OMG taka pierdoła, a jednak zadziałało :P dzięki
I właśnie miałem pytać bo robię praktycznie tak samo:

string line = Console.ReadLine();
string[] tab = line.Split(' ');
int n = Convert.ToInt32(tab[0]);
int m = Convert.ToInt32(tab[1]);

i zastanawiałem się czy nie ma lepszego sposobu na to

3

Nie ma, przy większych tablicach często się robi jeszcze w taki sposób:

int[] a = Array.ConvertAll(Console.ReadLine().Split(' '), x => Convert.ToInt32(x))

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