Odd and Even Product C# Loop Fundamentals

Добър Ден! Имам проблем със една от задачите в Loop категорията на C# fundamentals курса. Не мога да намеря къде има проблем в кода и бих бил благодарен ако някой има някаква насока. Прочетох всичко хиляда пъти, работи с примерните тестове и не мисля че имам някакъв проблем с логиката на задачата. Пробвах с различни int types, BigInteger, ulong. Същата работа навсякъде. Мерси предварително! https://pastebin.com/prDRpnDa

1 Like

Здравей, Виктор,

Може ли да споделиш и условието на задачата?

Поздрави,
Атанас

Odd and Even Product

Description

You are given N integers (given in a single line, separated by a space).

  • Write a program that checks whether the product of the odd elements is equal to the product of the even elements.
  • Elements are counted from 1 to N , so the first element is odd, the second is even, etc.

Input

  • On the first line you will receive the number N
  • On the second line you will receive N numbers separated by a whitespace

Output

  • If the two products are equal, output a string in the format “yes PRODUCT_VALUE” , otherwise write on the console "no ODD_PRODUCT_VALUE EVEN_PRODUCT_VALUE"

Constraints

  • N will always be a valid integer number in the range [4, 50]
  • All input numbers from the second line will also be valid integers

Sample tests

Input Output
5
2 1 1 6 3 yes 6
5
4 3 2 5 2 no 16 15

Заповядай! =)

А може ли да споделиш какво точно ти гърми (като тестове), когато я събмитнеш за оценяваме, защото прегледах кода ти и не открих нещо, което може да е причина да не минава задачата?

За всеки случай можеш да си направиш една променлива, на която да присвоиш броят на очакваните числа и да опиташ да въртиш цикъла до нея, въпреки, че не би трябвало това да е проблем, но все пак…

Буквално 4 от 5-те инпута към които тества не минават… минава само 1 и нямам грам идея защо. Проверих броя на очакваните числа също, всичко е точно. Точно за това реших да пиша във форума, понеже буквално не виждам къде може да е има проблем :confused:

A какъв output ти връща за тези 4ри теста?

Здравей, пробвай с if (i % 2 == 0) , вместо if ((i + 1) % 2 == 0).

Инпута е правилен, просто е грешен отговора.

Няма да има разлика, просто ще бъдат обърнати Even and Odd, резултата ще е идентичен =)

Опитай да стартираш цикъла от 1 до <= array.Length и промени if statements:

  1. (i % 2==1) --> odd
  2. (i % 2==0) --> even

Ако започне директно от 1 пропуска първия елемент от array-a и резултата няма как да е верен. :confused: Не мисля че проблема е в логиката за кое кога е четно или нечетно. Логиката на кода ми е точно както е в условието, проблема си мислех да не е нещо откъм размера на самите integers, но пробвах какво ли не :confused:

Привет,

Така не минава ли ?

https://pastebin.com/zfrr7eTi

Опитай с това решение:https://pastebin.com/qaria84A

Решението на Петър Стоянов дава 1:1 отговор като моето а на Атанас дава invalid return на всички. :confused:

Това вече е хубава грешка, ако смениш int на BigInteger и това решение ще ти даде 100/100 :slight_smile:

https://pastebin.com/eNyqN4VU

Продължава да си е invalid return, каквото и да го правя. Не мисля че разликата между инт и BigInt би давала invalid return. Ако разбирам като хората системата invalid return е примерно ако очаква string в даден формат, а не получи точно този формат. Ако стойността на int-a беше проблема щеше да даде директно просто грешен отговор, не invalid return :smiley:

Първата ти променлива N не я записваш никъде, просто прочиташ реда. Според мен е възможно и това да е причина да не ти го приема. Другото нещо е в if стейтмънта ти, когато добавяш единица към i, не минаваш през целия масив.

2 Likes

Проблемът е долу при печатането на резултата. Просто можеш да размениеш променливите. Извинявай, в бързината съм пропуснал да ги разменя! Ако и тогава не се оправи с интерес можем да продължим на лично :slight_smile:

Добавям 1 към i-то само в теста. Самия i variable си стои същия. Добавянето на единица към i е малко излишно да, можех да ги обърна 2-та % теста понеже в условието се казва че първия елемент е нечетен, следващия е четен и т.н. Просто като добавя 1 към i-to при положение че започвам от 0 луупа първия въпреки че щеше да излезе четен го кара да излиза нечетен. (буквално можех просто да обърна 2-та теста и щеше да е по-ясно, съгласен съм). Не записвам никъде N понеже не я ползвам. На втория ред получaвам N броя числа така или иначе и след като ги разделя със String.Split дължината на array-a е равна на N така или иначе. Просто сложих там този ред код за да не се оплаква judge системата.

Няма грешка в кода ти като сравнявам със тестовите. Като на моя компютър подкарвам този код работи точно както моя и вади идентичен резултат на примерните тестове. Мисля че нещо с Linq и $ оператора не се харесват с judge-a. Може да използват по-стара версия на .NET и да не поддържа някой от по-новите неща. Така или иначе сега точно ще отивам на работа, та мисля за сега да приключа главоболията, надявам се някой които е по-навътре със самата judge система поне да насочи къде точно е проблема ни! :smiley: Така или иначе благодаря за опитите, да се надяваме ще бъде разрешено скоро :smiley: