Помощ със задача


0

Здравейте,

ако някой има решение на задачата Saddy Kopper и го сподели, бих бил много благодарен!

Измъчих се 2 часа си блъскам главата и нищо... Разгледах авторското решение, но не схванах много, много идеята...

Благодаря предварително!




Отговори



1
Моето решение на задача 3 Maslan, аналогична на Saddy Kopper, решението е кратко и разбираемо според мен. Ако има неясноти ще поясня.

от Pip3r4o (3392 точки)


2

от kon.simeonov (5238 точки)


0

Коце, на мен твоят код също ми дава 90/100 както при моя, заради времевия лимит на 8-я тест. Any ideas как мога да оптимизирам моя код, за да влиза във времето и при този тест?

using System; using System.Numerics; namespace Saddy_Kopper { class Saddy_Kopper { static void Main() { BigInteger number = BigInteger.Parse(Console.ReadLine()); string srt; int sum = 0; int transformationsCount = 0; while (transformationsCount < 10 && 9 < number) { BigInteger productOfSums = 1; while (number > 0) { number /= 10; srt = number.ToString(); sum = 0; for (int i = 0; i < srt.Length; i += 2) { sum += srt[i] - '0'; } if (sum != 0) { productOfSums *= sum; } } transformationsCount++; number = productOfSums; } if (transformationsCount < 10) { Console.WriteLine(transformationsCount); } Console.WriteLine(number); } } }

Много време и много неща пробвах ама с нищо не ми се получи...


от ilkov (122 точки)

1
Множеството операции с BigInteger бързо прехвърлят времето в bgcoder - аз помня, че имах подобен проблем.  Направи number да ти е int (хммм може би long) - т.е. един BigInteger по-малко и ако и тогава не стане минавай на стрингове. Аз 3 пъти я оставях тая задача и пак я почвах. Сега гледам съм я решил като Коцето, но е силно вероятно да съм си "подсказал" от някое видео. Аз така правя - почвам, оставям, после пак се връщам - има задачи няколко дни ги влача и накрая когато съм доста отчаян - пускам видеото (ако има) цъквам на средата "ооооо виж тук има стрингове", затварям и отивам да цикля пак :D 
Не може да очакваш, като начинаещ програмист (поне аз съм такъв), да се сещаш за всички възможни варианти. Колкото повече задачи решаваш и гледаш, за толкова по-бързо ще се ориентираш в различни задачи. 
*Колеги само не забравяйте, че изпита не е като в истинския живот и ако я докарате до 60-70/100 и сте пробвали с по-големи променливи зарязвайте за накрая. Винаги може да се върнете после. 

от StoikoNeykov (2621 точки)



0
Реших и аз тази задача по мнго подобен начин. Но bgcoder ми дава 90 точки. Пуснах и този код, който си дал, но пак ми дава 90 точки. На 8ия тест все си седи Time limit.

Видях авторското решение, но изобщо не мога да схвана каква е логиката там. Само с него дава 100/100.



0

http://telerikacademy.com/Courses/LectureResources/Video/8188/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0-3-Saddy-Copper-%D0%95%D0%B2%D0%BB%D0%BE%D0%B3%D0%B8

Ето Live решение на задачата, дано помогне :)


от Pavloff (20 точки)

0
Благодаря, колега!



0

3.Saddy Kopper  100/100

using System; using System.Numerics; class MagicSadiKopar { static void Main() { string text = Console.ReadLine(); int transformations = 0; bool transformed = true; while (text.Length > 1) { int sum = 0; BigInteger product = 1; int position = 0; foreach (var symbol in text) { if (position % 2 == 0) { int number = symbol - '0'; sum += number; } product *= sum; position++; } product /= sum; transformations++; text = product.ToString(); if (transformations == 10) { transformed = false; break; } } if (transformed) { Console.WriteLine(transformations); Console.WriteLine(text); } else { Console.WriteLine(text); } } }


от V.Profirov (1122 точки)