C# обучение с нуля

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Статистика по сообщениям

  • Отправлено: 14
  • По консольным: 14
  • Получено ответов: 6

9480. --
Кирилл
Кирилл
ответить
→  Saniych  # Консоль / 4004 - Елена Вставская / Йагупоп / 2018-12-10 13:53

Согласен. Впервые со стаком столкнулся буквально только что, когда решал задачу про скобки. В итоге на задачу со скобками потратил 2 часа, а на эту минут 5-7


8380. --
zhikharevav
zhikharevav
ответить
→  Saniych  # Консоль / 6203 - Николай / Поиск слова перебором. / 2018-03-05 22:49

А как решить задачу в 4 строки не подскажите?


10558. --
Иван Воронин
Иван Воронин
ответить
→  Saniych  # Консоль / 6203 - Николай / Поиск слова перебором. / 2017-09-26 20:54

Надо учиться решать ПОСТАВЛЕННУЮ задачу.


8275. --
Tekashnik
Tekashnik
ответить
→  Saniych  # Консоль / 8275 - Глушков Александр / Зацикленная строка / 2017-09-26 13:48

А как ты решение подглядел?


10558. --
Иван Воронин
Иван Воронин
ответить

2450. --
Saniych
Saniych
ответить
# Консоль / 6203 - Николай / Поиск слова перебором. / 2017-07-31 19:02

Есть решение в 4 строки.
2 строки на задание переменных, 1 строка подсчет позиции и 1 строка вывода.
Без перебора.


2450. --
Saniych
Saniych
ответить
# Консоль / 6203 - Николай / Поиск слова перебором. / 2017-07-31 15:08

И за что же так не любят Ё???


2450. --
Saniych
Saniych
ответить
→  Андрей  # Консоль / 4004 - Елена Вставская / Простые множители / 2017-07-12 14:01

Это не Вам было, другому Андрею с ID 12465.


6275. --
Андрей
Андрей
ответить
→  Saniych  # Консоль / 4004 - Елена Вставская / Простые множители / 2017-07-11 21:24

Не нашел я в своей программе Write(). Один раз использую WriteLine().


2450. --
Saniych
Saniych
ответить
→  Андрей  # Консоль / 4004 - Елена Вставская / Простые множители / 2017-07-10 19:06

12465. Андрей:  В конце вывода Робот ожидает WriteLine(), а у Вас там только Write().


2450. --
Saniych
Saniych
ответить
→  Андрей  # Консоль / 4004 - Елена Вставская / Простые множители / 2017-07-10 18:52

Вероятно из-за того, что простые множители это не только 2,3,5,7. Есть ведь и другие числа.
Засуньте перебор множителей в цикл.


2450. --
Saniych
Saniych
ответить
→  Елена  # Консоль / 8275 - Глушков Александр / Ребус / 2017-06-24 15:49

Блин, так не честно...
Можно же было просто написать, что ключевыми являются данные цифры. И не расписывать почему и как.


2450. --
Saniych
Saniych
ответить
# Консоль / 7119 - Владимир Новопашин / Сумма цифр суммы чисел / 2017-04-08 19:04

Зашел на работу, проверить - за 24 часа пройдено 230 циклов по 9.000.000.000 значений... дурной перебор.


2450. --
Saniych
Saniych
ответить
→  Андрей Н.  # Консоль / 7119 - Владимир Новопашин / Сумма цифр суммы чисел / 2017-04-07 19:09

Вся оптимизация сводится к выводу формулы согласно свойств чисел.  Например: сумма чисел от 1 до 10 равна 55.
Перебором всех решений можно, но уже 10-значные пары вычисляются более 2х часов на кора2дуба Е7500, на одном ядре.
Мой вариант брутфорса, вывел его от скуки:
public class Program       
//заморочки с байтами для экономии памяти, решение проверялось в онлайн сервисах.
{ public static void Main()     
// а в них сброс задачи при завышении потреблении памяти или процессорного времени.
{ uint st = uint.Parse(Console.ReadLine()); uint ylast = st-1;
byte[] sumA = new byte[st], sumB = new byte[st], cont = new byte[st+st];
sumA[ylast] = 1;
while (sumA[ylast] < 9)
{ Array.Clear(sumB, 0,sumB.Length); sumB[ylast] = 1;
while (sumB[ylast] < 9)
{ byte chk = 1; if (sumB[0] > 9) { rebild_mas(sumB); }
for (byte j = 0; j <= ylast; j++) { if (sumA[j] + sumB[j] > 9) { chk = 0; break;} }
                                if (chk == 1) { cont[0]++; if (cont[0] > 200) rebild_mas(cont); } 
                                sumB[0]++;

sumA[0]++; if (sumA[0] > 9) { rebild_mas(sumA); }
}
                Console.WriteLine("{0} ", otvet(rebild_mas(cont)));
}
        static byte[] rebild_mas(byte[] summas)
        {  byte z = 0; while (z < summas.Length-1)
        {  if (summas[summas.Length-1] > 9) { Array.Resize(ref summas, summas.Length+1); }
summas[z + 1] += (byte)(summas[z] / 10);
            summas[z] = (byte)(summas[z] % 10);  z++;
        }  return summas; }
static string otvet(byte[] lon)
{ string rez =""; for (int x=lon.Length-1; x >= 0; x--)
{ if (lon[x] == 0 && x > lon.Length-2)continue; else rez += lon[x]; }
return rez; }
}


2450. --
Saniych
Saniych
ответить
# Консоль / 8275 - Глушков Александр / Зацикленная строка / 2017-03-28 14:50

Своих мозгов хватило на 70% решение... Пришлось подглядывать (2 недели думал).
Вычислять индекс символов для сравнения через остаток от деления - я бы не додумался.
Мюсли рядом крутились, но постоянно выходил за пределы массива.


2450. --
Saniych
Saniych
ответить
# Консоль / 4004 - Елена Вставская / Йагупоп / 2017-03-10 16:49

По сравнению со "скобками" и переводом из "двоичной системы" как-то слишком простая задача.


2450. --
Saniych
Saniych
ответить
# Консоль / 4004 - Елена Вставская / Двоичная система / 2017-03-09 17:47

Hint!
Протестируйте расчет такого числа в bin:
111000011111111111111110001111111111111111111111111000011001


2450. --
Saniych
Saniych
ответить
→  Сергей  # Консоль / 4004 - Елена Вставская / Системы счисления / 2017-03-09 15:05

Может буквы нужны большие?
ABCDEF


2450. --
Saniych
Saniych
ответить
→  Yefim  # Консоль / 4004 - Елена Вставская / Повторяющиеся цифры / 2017-03-07 19:37

удаляйте минус из считываемой строки.
if (st.Substring(0,1)=="-") st = st.Remove(0,1);

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.