Loading...
Rafaelo avatar Rafaelo 42 Точки

Lists Advanced - More Exercises - 02. Car Race

Здравейте,

Някой може ли да даде мнение за следния проблем, който предполагам е свързан със самия Python interpretator, но не успях да намеря инфо в интернета.

Условието на задачата е тук: https://judge.softuni.bg/Contests/Practice/Index/1732#1

Решението ми е тук: https://pastebin.com/t2EzXQk8

Скриийншот: https://ibb.co/D8584LN

Проблема, който имам съм го описал и в коментарите и може да го видите на горния скрийншот. По условие се казва, че "If you have a zero in the list, you have to reduce the time of the racer that reached it by 20% (from his current time).". Ако това действие го направя с VARIABLE -= VARIABLE * 0.20 джъдж не е съгласен и дава 40 от 100, но пък ако го направя с VARIABLE *= 0.80, тогава дава 100 от 100.

Дебъгера показва, че в единия случай излиза стойност с много цифри след десетичната запетея, но не разбирам защо е така. Някой има ли идея?

Тагове:
0
Python Fundamentals 23/09/2020 22:22:43
Dimiter.Georgiev avatar Dimiter.Georgiev 7 Точки

Здравей

Във C# има същият проблем, но се появява само понякога. На тази задача определено е така. Не мога да си обясня защо показва 8-10 нули след десетичната запетая и после някакво число. И то при положение че след делене не безкрайна редица.

0
ankamar56 avatar ankamar56 8 Точки

В условието пише: "...reduce the time of the racer that reached it by 20% (from his current time)." -> намалява се времето с 20%, което означава , че текущото време е 80% от сумираното до момента. А това, че дава число с плаваща запетая - float - също е нормално. В крайния формат на изхода всичко се показва с точност 1 знак след десетичната точка.

0
daniel123123 avatar daniel123123 27 Точки

с float при C# се оправя 100/100

using System;
using System.Linq;
class SoftUni {
    static void Main() {
        var nums = Console.ReadLine().Split().Select(int.Parse).ToList();
        float timeL = 0;
        float timeR = 0;
        for (int i = 0; i < nums.Count / 2; ++i) {
            timeL += nums[i];
            if (nums[i] == 0) {
                timeL *= 0.8f;
            }
        }
        for (int i = nums.Count - 1; i > nums.Count / 2; --i) {
            timeR += nums[i];
            if (nums[i] == 0) {
                timeR *= 0.8f;
            }
        }
        if (timeL < timeR) {
            Console.WriteLine($"The winner is left with total time: {timeL}");
        } else {
            Console.WriteLine($"The winner is right with total time: {timeR}");
        }
    }
}

 

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