На Проблем 3 аз ли не мога да разбера как се формира сумата или има някаква грешка в примерите?
problem1 Numbers from 1 to N
problem2 Numbers Not Divisible by 3 and 7
problem3 to do
problem4 Print a Deck of 52 Cards
problem5 Calculate 1 + 1!/X + 2!/X2 + … + N!/XN
На проблем 5 стойностите от примерите в домашното получават различен резултат на изхода на конзолата( не са еднакви с тези от примерите). Някой ще погледне ли дали проблема е в мен?
problem6 Calculate N! / K!
problem7 Calculate N! / (K! * (N-K)!) -На проблем 7 стойностите от примерите в домашното получават различен резултат на изхода на конзолата( не са еднакви с тези от примерите). Някой ще погледне ли дали проблема е в мен?
problem8 to do
problem9 to do
problem10 to do
problem11 to do
problem12 to do
Здравейте, реших 11 задача.
Ето го и решението http://pastebin.com/hFVeMisb , но нещо ме съмнява примера в условието. Там при n = 100000 нулите са 24999. Аз получавам отговор 21111 нули.
Логиката ми е следната: При умножение на числа, нула на края се получава само при умножение на число завършващо на 5 с четно число или при умножение на кое да е число с число завършващо на нули.
Ако преброя числата кратни на 5 и нулите в края на числата в интервала от 1 до N, аз ще знам броя на нулите на N!.
Някой ако е решил задачата моля да пише, за да сверим отговорите.
отговора е абсолютно точен, не случайно обяснението е: think why
трябва да разшириш малко логиката, има числа които освен че се делят на 5, се делят и втори, трети... път на 5 като 25, 125 и т.н. дават възможност за допълнителен брой нули заедно с четните числа, които са достатъчно много
дефакто трябва да броиш не колко числа се делят на 5, а колко пъти същите тези числа се делят на 5 :) успех
За това не бях се сетил. Благодаря ти!
Ето преработеният код, мисля че работи перфектно http://pastebin.com/sNM5H8AY
Оказа се достатъчно да се намерят числата, които се делят на 5 и да се преброят, колко пъти общо те ще се разделят на 5.
ZvetanIG, примера си е много точен. За подобро изпълнение на задачата ти препоръчвам да прочетеш следната статия Trailing zero и да използваш приложената формула на de Polignac's:
countZeroesFactorialN = (N / 5) + (N / 5^2) +...+(N / 5^k), където 5^k > N .
Логиката на тази формула е желязна и със сигурност работи! Надявам се да съм ти помогнал.
Успех!
Problem 1. Numbers from 1 to N
Problem 2. Numbers Not Divisible by 3 and 7
Problem 3. Min, Max, Sum and Average of N Numbers
Problem 4. Print a Deck of 52 Cards
Problem 5. Calculate 1 + 1!/X + 2!/X2 + … + N!/XN
Problem 6. Calculate N! / K!
Problem 7. Calculate N! / (K! * (N-K)!)
Problem 8. Catalan Numbers
Problem 9. Matrix of Numbers
Problem 10. Odd and Even Product
Problem 11. Random Numbers in Given Range
Problem 12.* Randomize the Numbers 1…N
Problem 13. Binary to Decimal Number
Problem 14. Decimal to Binary Number
Problem 15. Hexadecimal to Decimal Number
Problem 16. Decimal to Hexadecimal Number
Problem 17.* Calculate GCD
Problem 18.* Trailing Zeroes in N!
Problem 19.** TODO
Понеже мъча 12-та задача и видях, че и при теб повтаря числа. Т.е. не изписва числата от 1 до n в произволен ред, а работи като предната (11-та) - изписва произволни числа от 1 до n. Ако измислиш решение, което да отговаря на условието, моля, сподели.
Мда условието на 12-та задача е да не се повтарят числата.Затова трябва да се проверява всяко следващо число дали е принтирано вече и ако е-да се извърти цикъла със същата итерация за повторен опит.Ако числото не е отпечатано се опечатва и се минава на следващата итерация.Аз съм го направил с масив от булеви стойности, които се променят в зависимост от това дали елемента с индекс равен на генерираното число е true или false.Eтo едно примерно решение.
Извинявай би ли обяснил решението си на 4 задача и къде по точно видя, че 3, 4, 5, 6 са ♣ ♦ ♥ ♠ .. Благодаря предварително и поздравление за успешно решените задачи!
Problem 12** - моето решение.
Ето и Problem 11*. Оказа се доста лесен.
Problem 10* - GCD
Здравей,
интересно си решил 10-та задача. Може ли да обясниш, как стигна до това решение?
Пичове.. къде греша в задача 9.. Matrix :? Тя работи но не точно .. ;д http://pastebin.com/7H6bQseM Започва да брои от 2.. което е ясно.. защото един път съм задал да започва от row + 1 counter-a а в вложения цикъл съм задал counter++ .. Как да го направя да започва от 1? ;д Нещо елементарно е .. но какво ли не пробвах.. Row = -1 , 0 .. не знам какво става но час и половина вече не се получава ;д Или съм зациклил много или съм ослепял и не виждам елементарната грешка.. ;д нз кое от 2-те ;д
Console.WriteLine("enter number < 20");
byte n = byte.Parse(Console.ReadLine());
if ((n <= 20 ) && (n >= 1))
{
for (int row = 1; row <= n; row++)
{
for (int col = 0; col < n; col++)
{
Console.Write("{0, 2}",row+col);
}
Console.WriteLine();
}
}
else
{
Console.WriteLine(" Invalid input ");
}
още един алгоритъм:
for (int i = 0; i < n; i++)
{
for (int j = i; j < i+n; j++)
{
Console.Write(j + 1 + " ");
}
Console.WriteLine();
}
Ето едно решение на 9-а.
int n = int.Parse(Console.ReadLine());
for (int row = 0; row < n; row++)
{
for (int column = 1; column <= n; column++)
{
Console.Write("{0} ", row + column);
}
Console.WriteLine();
}
Ето моята 12:
И 10 -та:
11-та ще трябва да я мъча малко за големи числа.
Потърси в google за "Factorials and trailing zeroes". Много се чудих как да го направя за големи числа и пробвах какво ли не. Накрая реших да проверя дали има някакъв математически алгоритъм за големи числа и се оказа, че има!
По условие не е забранено и с BigInteger32?
Не става с Big Int - реших за спорта да пробвам да изчисля факториела и след това да броя нули - процесора ми е i3, 6 GB RAM. За 100000! го оставих през нощта да върти - на сутринта още мигаше курсора. Иначе решавам задачата, кото броя всяко от числата в 100000! колко пъти се дели на 5.
Моето решение на 10 задача.
Приятелю.. ти тества ли задачата с 5 и -15.. , защото на мен нещо не ми показва никакъв отговор..
Упс, благодаря за забележката. Поправих го.
Колеги.. по какъв начин мога на 12-та задача матрицата.. да направя проверка като срещне друго число да променя посоката.. Аз я направих да се върти.. и започва си от 1.. върти на дясно.. после на долу.. после ляво и като започне нагоре.. ми закрива единицата и започва пак по стария път.. вместо като срещне число != 0 веднага да смени посоката която съм указал.. Пробвах така но ми дава грешка.. Ето го и кода В фор цикъла съм го направил до 12 за да може които изпробва програмата да се увери че се върти.. Ако се поправи i <= maxRotation ще се завърти според условието.. до n * n. Ето с каква проверка се опитвам да оправя нещата но дава грешка.. ;х Някакви други идеи за проверка :? Само ако може да ми създадете проверка по този код.. щото си разбирам логиката и кода.. а не да ми дадете някой код за напреднали който ще го зяпам 3 дни докато се чатна кво става ;д Благодаря предварително :)
Ето го моя вариант. Съвсем не е оптимизиран и можех да си послужа с методи, вместо само да трупам цикли, ама нейсе. Струва ми се поне, че лесно може да му се схване логиката (нали аз съм го писала, как няма да ми се струва логично, хаха).
@H.Petrov ами .. аз го бях направил за всички посоки.. но го махнах.. за да видя от къде ми идва грешката.. и направих проверка само за на дясно с цел да се види ясно на скриин-а къде е проверката и да се отличи от останалите посоки.. Да може да се акцентира на нея :) Ти пусна ли кода да видиш дали и на теб ще ти даде грешка или?
Ето и моите решения, ще ъпдейтвам поста с напредъка си :)
2.Numbers not divisible by 3 and 7
3.MinMaxSumAndAverage - Вижте това решение, може да ви се стори интересно.Реших да го направя с масиви, за да може да работи с безкраен брой числа, съответно забих на математическите операции с масиви, наложи ми се да се запозная с linq и така нататък :)
Задача, която трябваше да отнеме не повече от 2 минути ми отне в крайна сметка над 30, но съм горд с решението и научих доста нови работи!
Колеги само да споделя, че домашното е ъпдейтнато и има добавени още задачи! Изтеглете го наново!
Да така е :) Имаме още 7 задачи, над които да цъкаме и разсъждаваме.
Ето 2-ра задача от мен:
static void Main()
{
Console.Write("Enter a number : ");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
if ((i % 3 == 0) || (i % 7 == 0))
{
continue;
}
Console.WriteLine(i);
}
Поздрави!
Ето и моите досега решени задачи:
Problem 1. Numbers from 1 to N
Problem 2. Numbers Not Divisible by 3 and 7
Problem 3. Min, Max, Sum and Average of N Numbers
В примерите от задача 3 първото число от колоната ти показва общия брой на числата и не се сумира !!!
Problem 4. Print a Deck of 52 Cards
Тук за по-лесно съм използвал два масива от тип стринг, които влагам един в друг чрез два вложени цикъла foreach. Също така за по-добро форматиране на резултата ползвах и форматиращи стрингове при формирането на четирите колони.
Problem 5. Calculate 1 + 1!/X + 2!/X2 + … + N!/XN
Явно има накаква грешка в първите два примера от задача 5. С третия пример няма проблем! При мен за n=3 и x=2, получавам S=2.75000 ! За n=4 и x=3 се получава S=2.07407 ! Анализирах внимателно алгоритъма и смятам, че е правилен.
Problem 6. Calculate N! / K!
Problem 7. Calculate N! / (K! * (N-K)!)
Problem 8. Catalan Numbers
Problem 9. Matrix of Numbers
Problem 10. * Calculate GCD
Problem 11. * Trailing Zeroes in N!
Patrik В задача 7 основната ти грешка е, че в третия цикъл при изчислението на К! факториела, повторенията са ти n-пъти вместо k ! Иначе в условието на задачата се изисква да се реши с два цикъла, а не с три, помисли не е толкова сложно! Друго нещо е че при изчисления с факториели е добре да се ползва типа BigInteger, за да се избегне препълването при другите типове!
Това е моето решение на задача 12 за числата наредени в спирална матрица:
Problem 12. ** Spiral Matrix
Бих казал, че за мен това беше най-трудната от всички 12 задачи и ми отне много време да стигна до решението!
Надявам се да съм бил полезен!
12.SpiralMatrix