Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

dim4o avatar dim4o 288 Точки

[Домашно] Loops - цялото

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 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 17.       * Calculate GCD

Problem 18.       * Trailing Zeroes in N!

Problem 19.       ** Spiral Matrix

Catalan Numbers съм я решил по 2 начина, но единия работи само до N=30, защото не използва BigInteger. Реших, че ще е интересно да се направи оптимизация, така че да се изстиска максимума от примитивните типове променливи. Евентуално може да се направи да работи и до N=36 ако се подобри алгоритъма още малко; Идеята е още когато въртим в цикъл да съкращаваме това, което можем, а не да изчисляваме просто първо числителя после знаменателя и накрая да делим.

28
zontak avatar zontak 457 Точки

dim4o, задача 10 от твоето домашно нещо ми се струва грешничка малко ;д Ти там ако не се бъркам делиш всяко едно число на 2.. и случайно ако не се дели го слагаш към нечетните ;д Аз мисля,че в задачата се иска четни и нечетни в реда в които са написани.. а не да разбираш дали всяко едно число е четно ;д ако е написано 2 1 1 6 3 умножаваш 2 * 1 * 3 = 6.. и 1 * 6 = 6.. което ги прави равни.В твоята задачка всяко число се дели на 2.. :) Оправи я малко или ме поправете мен ако бъркам.. :)

2
dim4o avatar dim4o 288 Точки

Не мисля, че греша. Аз не деля числото на нищо, а просто проверявам дали индекса на масива се дели на 2. Ако се дели на 2 или самия индек се 0, позицията на числото е нечетна, а иначе е четна, т.е. позициите с индекси 0, 2, 4, ... са нечетни, а тези с индекси 1, 3, 5,.. са четни. Логиката е правилна, а и кода си работи с правилно с всички редици, които пробвах. Ти се бършаш, защото си мислиш, че деля числата, а то не е изобщо така.

3
zontak avatar zontak 457 Точки

Да.. прав си .. моя е грешката.. видях го после но нямах време да драсна.. занимават ме с глупости ;д

1
StanDimitroff avatar StanDimitroff 90 Точки

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

3
XmUrF avatar XmUrF 363 Точки

Прав си. В случая обаче според мен условието е грешно, тъй като няма причина n да не може да бъде 0.

0
petio.bs avatar petio.bs 50 Точки

Всъщност...

Wikipedia:

"The first Catalan numbers for n = 0, 1, 2, 3, … are

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, ..."

Просто добавете един if за нулата :)
0
Plami avatar Plami 373 Точки

Интересно ми е как разбирате условието на задача 10 от новото домашно, понеже аз нещо не го схващам :D В условието се иска сумата от четните да е равна на сумата от нечетните? Понеже е ако е така нещо не се получват отговорите 2+6 # 1+1+3

Моля ви помогнете ако някой го е разбрал :)

0
Plami avatar Plami 373 Точки

:D почнах и аз да си говоря сама - разбрах го. Говори се за произведение (2x1x3 = 1x6) :)

Извинявам се, че напълних форума с мои глупости :D

3
Masovski avatar Masovski 211 Точки

 

 Ето и моите решения: 

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!/X^2 + … + N!/X^N

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.**   Spiral Matrix

15
milen8204 avatar milen8204 296 Точки

На проблем 14 имаш ред, който е long dec = int.Parse(Console.ReadLine()); ако някой подаде long число ще ти гръмне, по добре смени инта с long, сега не гърми защото подаваш числа в рамките на типа int, но за да ти е по - качествен кода може да го смениш :).

1
Masovski avatar Masovski 211 Точки

Да, бях го забелязал във Visual Studio (понеже първо бях използвал int) и съм забравил да го оправя и в PasteBin. Благодаря за отбелязването. :) Само една поправка - проблем 14, а не 13

1
milen8204 avatar milen8204 296 Точки

Дааам, прав си, всички грешим и за това трябва да си помагаме ;)

1
milen8204 avatar milen8204 296 Точки

Някой измислил ли е решение на Problem 18. * Trailing Zeroes in N!, която като му подадеш за n = 100000, не виси по 2-3 мин? Има някаква закачка там с това "think why" ама аз не мога да уловя логиката :). Иначе и аз съм я решил като намеря фактуриела в BigInteger и след това го деля цялочислено на 10 и после не челочислено и лющя нулите :), но ми се струва твърде лесна за да е със *. Предполагам, че идеята е да я накараме да работи коректно и за 100000, но как...?Нищо не ми идва на акъла, но продължавам да мисля :)

П.С. Не съм видял решението на dim4o той го е направил тук.

2
Masovski avatar Masovski 211 Точки

Да, това определено е готино решение. И логично, ако се загледаме каква логика следват броя на нулите от първите 2 примера. dim4o явно го е направил и му се е получило.

2
milen8204 avatar milen8204 296 Точки

За мен логиката е, че при 5 има една нула отзад и при всяка следваща петица трупа нули.

1
Masovski avatar Masovski 211 Точки

Да, а това може да се потвърди от първите 2 примера:

За n = 10, trailing zeroes = 2 

За n = 20, trailing zeroes = 4

От тук следва, че 10 / 2 == 20 / 4 , или иначе казано - нули има за всяко пето число в n.

1
milen8204 avatar milen8204 296 Точки

Моето решение на SpirtalMatrix, ако някой го интересува ;). Да кажа, че сам не можах да се справя и потърсих помощ в нета, някакъв пич я беше решил с едни посоки, хакове и други неща, но аз си измислих мое решение. Взаимствах само да печатам стойностите в двумерен масив, като си създам две променливи row и column, в които да се пазят стойности за "координатите" на стойностите в матрицата, използвам една променлива counter, която да се увеличава при всеки вписан член на матрицата на съответните координати. Забелязах, че страната на матрицата се намалява с 1, през 2 линиии на изписване, тоест изписваме хоризонтален ред с дължина зададеното число n, и след това имаме 2 страни с дължина n-1, след това две с дължина n-2 ((n-1) -1) и така създадох и една променлива side, която да се намалява периодично в зависимост от това коя страна на матрицата запълваме. След което създавам 4 цикала за всяка една от страните и след всеки правя корекции на row и column, за да не излизат координатите извън матрицата. Вмъквам 4-те for цикала за страните в един while, за да ги върти докато изчерпа максималния брой стойности на матрицата, който е = n*n (квадратна матрица), след това с два вложени цикъла печатам всеки един член на двумерния масив. И така си бачка :).

1
Stoyan.Stoyanov avatar Stoyan.Stoyanov 96 Точки

Не видях някой да е решил 4-та задача спазвайки точно условието - да се използват вложени for цикли + switch-case.

Аз също не можах да го измисля по този начин. Направих го само с два for-a и два масива: http://pastebin.com/CpJSjATm

0
Stoyan.Stoyanov avatar Stoyan.Stoyanov 96 Точки

Да, чудесно изглежда, но според мен пак не е точно според условието, защото използвате два switch-case-а.

"Use 2 nested for-loops and a switch-case statement."

1
Masovski avatar Masovski 211 Точки

Добре, сега е според условието. Просто не съм обърнал внимание на това 'a' отпред. Благодаря за отбелязването. smile

1
coaster avatar coaster 412 Точки

Здравейте.
Гледам тук решението на задача 12 - Randomize the Numbers 1…N на колегата @StanDimitroff и нещо не мога да го схвана. Всичко работи точно, няма грешка, грешката е в мен. По-точно не си "превеждам" какво прави if конструкцията, или следният фрагмент от кода:

if (!printed[numberToPrint])
{
    Console.Write(numberToPrint + " ");
   
printed[numberToPrint] = true;
}
else
{
    i--;
}

Някой би ли могъл да обясни ред по ред какво се случва...?

0
Tr00peR avatar Tr00peR 566 Точки

Имаш булев масив с n на брой елемнта, на който по подразбиране всички стойности са false. Когато се принтира дадено число, на индекса му в този булев масив се слага стойност true.

На всяка итерация на цикъла се проверява дали произволно изтеглено число е вече принтирано, и ако не е - се принтира и му се променя в булевия масив, а ако е принтирано, водещата променлива i се намалява с едно, за да се изпълнява цикъла, докато не се принтират всички числа.

Надявам се да съм го обяснил добре :)

5
ti4o.bs avatar ti4o.bs 16 Точки

Това е решението ми на 18-та задача. Но нещо не мога да го подкарам с 100000. Идеи?

int n = int.Parse(Console.ReadLine());
BigInteger fact = 1;
int sum = 0;
for (BigInteger i = 1; i <= n; i++)
{
fact *= i;
}
Console.WriteLine(fact);
while (fact % 10 == 0)
{
fact = fact / 10;
sum++;
}
Console.WriteLine(sum);
0
Masovski avatar Masovski 211 Точки

Не би трябвало да ти прави проблем. По-скоро трябва да чакаш по-дълго за да се появи резултат. Погледни решението на dim4o, който го е направил да работи много бързо и коректно.

0
gogodam93 avatar gogodam93 25 Точки

Eто и моето решение на 11 

static void Main()
{
int count = 0;
int number = int.Parse(Console.ReadLine());
BigInteger faktoriel = 1;
while (number > 0)
{
faktoriel *= number;
number--;
}
while(faktoriel % 10 == 0)
{
count++;
faktoriel = faktoriel /10;
}
Console.WriteLine("{0} {1}",faktoriel,count);
}

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.