De-Cat-Coding въпрос за задача


0
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace exam { class Program { static void Main() { double result = 0; var list = new List<string>(); StringBuilder sb = new StringBuilder(); string[] inp = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); char[] alphabet = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; var dic = new Dictionary<char,int>(); int valCounter = 0; for (int i = 97; i < 97+21; i++) { char key = (char)i; dic[key] = valCounter; valCounter++; } foreach (var word in inp) { sb.Clear(); for (int i = 0; i < word.Length; i++) { var currentSym = dic[word[i]]; var pow = Math.Pow(21, word.Length - i - 1); result += currentSym * pow; } long res = (long)(result % 26); while (true) { res = (int)(result % 26); result /= 26; sb.Insert(0, alphabet[res]); if (Math.Floor(result) ==0 ) { break; } } string calculatedWord = sb.ToString(); list.Add(calculatedWord); } Console.WriteLine(string.Join(" ",list)); } } }
Това успях да напиша, имате ли идея защо получавам 25 точки, плс споделете :)



Отговори



0
Мисля, че числата няма да се поберат в long, използвай bigInteger. Пробвай да напишеш собствен метод за math.pow, защото може и там да е проблема. Нямам как да я тествам в момента, но това са нещата, които забелязвам в момента.



1

Здрасти Веско,

първо благодаря за отговора. Пробвах със собствен метод за степента, ама пак 25 точки, заместих с по-големи числа, но пак 25 :D


от tomhafner (75 точки)


0

Здравей,

Това е моето решение и работи правилно. Може да погледнеш какво си изпуснал.


от suzunov (321 точки)


0

Използвай навсякъде BigInteger, а на ред 33 използвай BigInteger.Pow, не Math.Pow; Така дава 100/100 в bgcoder


от georgivelikov (1844 точки)


0
Уау, мерси много наистина сработи с BigInteger! Да ви кажа колко съм просТ само... Преди това съм добавил bigInteger, но с контрол точка съм генерирал клас, който да имплементирам, а не съм го добавил през add refference и system.numerics и от там цялата обърквация... МЕРСИ МНОГО за помощта!

от tomhafner (75 точки)


4
Ще ви бия с това изчисляване на степени при превръщане, ей. :D

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


0
Случва се и в най-добрите семейства :D

от tomhafner (75 точки)