Професионална програма
Loading...
+ Нов въпрос
AlexHristov avatar AlexHristov 20 Точки

Благодаря. Интересно и кратко решение.

1
georgi.getz avatar georgi.getz 8 Точки

да кажем че minLength = 5 и maxLength = 8

първо въртиш 5 пъти (0,1,2,3,4) и после въртиш още maxLength - minLength, обаче понеже си написал '<=' въртиш още 4 пъти (0,1,2,3) така въртиш 9 вместо 8 пъти, пробвай само с '<'

0
AlexHristov avatar AlexHristov 20 Точки

Благодаря за намесата, колега. За съжаление се оказва, че не е това грешката. При проверката с последния тест от заданието, където първия стринг има само един елемент се оказва, че дава погрешен резултат, когато премахна знака за равно, а джаджа също е категоричен 60 т. Все още не мога да открия откъде идва проблема.

0
georgi.getz avatar georgi.getz 8 Точки

единственото друго, за което мога да се сетя, е да пмениш long на BigInteger, но се съмнявам чак 4 теста да оправи

все пак пробвай - using System.Numerics; и ги смени

0
AlexHristov avatar AlexHristov 20 Точки

Да, променях и типовете данни, включително и BigInteger, но задачата отново не мина всички тестове в джаджа.

0
WifiAvivi avatar WifiAvivi 151 Точки

Ето фикс на кода ти:

http://pastebin.com/k5ASvQ43

 

long или BigInteger не ти трябват, int е достатъчен за сумата. Това не съм го пипал, оправи си го ако искаш.


Предполагам, че ще разбереш грешките ти. Първия if else НЕ трябва да го има, даже в този else повтаряш операцията 

 sum += firstArr[i] * secondArr[i];

, което не трябва да се случва.

 

Също въртенето в цикъла

for (int i = minLength; i <= maxLength - minLength; i++)

го преправих на

for (int i = minLength; i < maxLength; i++)

По-горе колегата ти е обяснил защо.

 

Моля, за Best Answer за времето, което отделих да ти поръчкам кода :")

1
19/10/2016 15:53:45
AlexHristov avatar AlexHristov 20 Точки

Благодаря ти за подробното проследяване на кода.

За съжаление съм под 15 т. и не съм сигурен дали ми прие отговарянето с "най-добрия"  ;)

1
Tsekotsolov avatar Tsekotsolov 12 Точки

Ето и моят код: https://pastebin.com/fMUXLSCt

0
D77commerce avatar D77commerce 1 Точки

Едно по четимо решение

using System;

namespace _2.__Character_Multiplier
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] input = Console.ReadLine()
                 .Split();
            string first = (input[0]);
          string second = (input[1]);
            char[] firstChar = input[0].ToCharArray();
            char[] secondChar = input[1].ToCharArray();
            long total = 0;
           
            int minArray = Math.Min(input[0].Length, input[1].Length);
            for (int i = 0; i < minArray; i++)
            {
                long midTotal = firstChar[i] * secondChar[i];
                total += midTotal;
            }
            if (firstChar.Length > secondChar.Length)
            {
                for (int i = 0; i < firstChar.Length-minArray; i++)
                {
                    total += firstChar[i + minArray];
                }
            }
            else
            {
                for (int i = 0; i < second.Length-minArray; i++)
                {
                    total += secondChar[i + minArray];
                }
            }
         
            Console.WriteLine(total);
            
        }
    }
}
 

0