Loading...
itanev avatar itanev 1 Точки

19. * Thea the Photographer

Здравейте колеги.При така качена задачата в judge ми дава 70/100. И при проверка на изходните данние ми излизат коректни резултати,но 8,9 и 10 тест от judge ми дават грешен отговор.Може ли някои да ми подскаже къде изпускам нещо.Благодаря предватително :)

using System;

namespace _19.Thea_The_Photographer
{
    class Program
    {
        static void Main(string[] args)
        {
            int countPictures = int.Parse(Console.ReadLine());
            int filterTimeForOnePicture = int.Parse(Console.ReadLine());
            int filterFactor = int.Parse(Console.ReadLine());
            int uploadTime = int.Parse(Console.ReadLine());

            double filterPicture = Math.Ceiling(countPictures * (filterFactor / 100.0));
            double firstAnswer = countPictures * filterTimeForOnePicture;
            double secondAnswer = filterPicture * uploadTime;
            double answer = firstAnswer + secondAnswer;

            TimeSpan time = TimeSpan.FromSeconds(answer);
            string str = time.ToString(@"d\:hh\:mm\:ss");
            Console.WriteLine(str);

        }
    }
}
 

Тагове:
1
Programming Fundamentals
yordank avatar yordank 89 Точки

The amount of total pictures Thea will have taken is range [0 … 1 000 000]

The seconds for both filtering and uploading will be in range [0 … 100 000]

The filter factor will be an integer number between [0 … 100].

Мисля,че заради тези ограничения и заради умножението се получава препълване на int което се преобразува към double,може би трябва да използваш long вместо Int 

1
itanev avatar itanev 1 Точки

По условие е дадено да се ползва int: The input will be in the described format, there is no need to check it explicitly. Ще пробва с ограничаване на входа.

 

0
yordank avatar yordank 89 Точки

 

Друг вариант е умноженията да се преобразуват към double.

http://pastebin.com/PHVarvhs

Имах предвид,че ако пробваш например само долната част от кода какво ще изведе с вход 1 000 000 и 100 000, трябва да се изведе 100 000 000 000,нали така?

using System;

namespace _19.Thea_The_Photographer
{
    class Program
    {
        static void Main(string[] args)
        {
            int countPictures = int.Parse(Console.ReadLine());
            int filterTimeForOnePicture = int.Parse(Console.ReadLine());
          

            double firstAnswer = countPictures * filterTimeForOnePicture;
       
            Console.WriteLine(firstAnswer);

        }
    }
}

а в случая връща друг резултат,защото int приема стойности от -2,147,483,648 до 2,147,483,647

0
25/09/2016 02:33:50
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравей,

По условие е зададено, че числата се побират в int, но искам да отбележа, че когато имаме умножение от сорта на 1 000 000 * 100 000 - това съвсем спокойно може да препълни този тип данни. :)

Поздрави!

1
puffed avatar puffed 289 Точки

Съгласна съм с другите, че в тази задача double се ползва единствено за изчислението на процента филтрирани снимки и веднага трябва да се преобразува в цяло число. Останалите променливи са цели числа. Аз лично приемам входа в променливи от тип int, защото по условие няма да го препълнят. После и аз имах грешка в изчисленията, като използвах тези int-ове, но запазвах отговора в long. Сега го промених и правя експлицитно конвертиране към long на всяка променлива в изчисленията и така няма грешки.

long filterTime = (long)allPictures * (long)filterTimePerPic;
var goodPictures = (int)Math.Ceiling(allPictures * filterFactor / 100d);
long uploadTime = (long)goodPictures * (long)uploadTimePerPic;
long totalTime = (long)filterTime + (long)uploadTime;

Помогнахте ми с вашите отговори да си намеря грешките, благодаря!

0
30/09/2016 11:04:26
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.