Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

rumirtp avatar rumirtp 0 Точки

C# Fundamentals - Data Types - 11.Snowballs [90/100]

Немога да разбера защо на 5- ти тест ми дава грешка, това е кодът ми:

using System;

namespace zad11
{
    class Program
    {
        static void Main(string[] args)
        {
            int nSnowballs = int.Parse(Console.ReadLine());
            decimal maxrezult= 0;
            uint maxsnow = 0;
            ushort maxtime = 0;
            uint maxquality = 0;
            
            for (int i = 1; i <= nSnowballs; i++)
            {
                
                uint snowballSnow = uint.Parse(Console.ReadLine());
                ushort snowballTime= ushort.Parse(Console.ReadLine());
                uint snowballQuality = uint.Parse(Console.ReadLine());
                double rezult = snowballSnow / snowballTime;
                decimal rezult1 = (decimal)Math.Pow(rezult,snowballQuality);
                if (rezult1 > maxrezult)
                {
                    maxrezult =rezult1;
                    maxsnow= snowballSnow;
                    maxtime = snowballTime;
                    maxquality = snowballQuality;
                }
            }
            if (maxrezult!=0)
            {
                Console.WriteLine($"{maxsnow} : {maxtime} = {maxrezult} ({maxquality})");
            }
            
           
        }
    }
}
 

Тагове:
0
Module: C# Advanced
krum_43 avatar krum_43 750 Точки

Задачата е коментирана многократно из форума.Там където повдигаш на степен (decimal rezult1 = (decimal)Math.Pow(rezult,snowballQuality).

Израза от дясно на равенството става много голям и не се побира в decimal.

Използвай вместо него BigInteger.

 

0
Dani0000 avatar Dani0000 1 Точки

На практика, ако се спазва условието на задачата, най-големмия резултат влиза в размер double, но и по този начин се чупи кода.

btw същия код пуснат на Java минава с double променлива.

Бих искал да видя входа на този тест#5.

0
AleksPopov avatar AleksPopov 3 Точки

Идеята, че проверката не минава ако променливите не са от тип BigInteger. За да можеш да го изполваш трябва напишеш using System.Numerics; под using System; Единствените променливи, които съм оставил int са nSnowballs и snowballQuality(защото прави проблем при BigInteger.Pow).

По-добре сам да я решиш, но ако не става ето и моето решение.https://pastebin.com/sb1xW2qp

Успех!

0
rumirtp avatar rumirtp 0 Точки

Алекс много благодаря, разгледах решението, така е работещо. Въпреки това доста неща не са ми ясни за BigInteger и  какво ни дава: using System.Numerics, но с това ще трябва да се справя. 

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