Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Помогите с алгоритмом
Показать сообщение отдельно

Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
// declaration 
            decimal N = numericUpDown1.Value, loopTotaSum = 0, loopAmount = 0,
                prog3Amount, prog3Sum, prog7Amount, prog7Sum, prog21Amount, prog21Sum;
            System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();

            // Loop
            st.Start();
            for (int i = 1; i <= N; i++)
            {
                if (i % 3 == 0 || i % 7 == 0)
                {
                    loopTotaSum += i;
                    loopAmount++;
                }
            }
            loopTotaSum_textBox.Text = loopTotaSum.ToString();
            loopAmount_textBox.Text = loopAmount.ToString();
            st.Stop();
            loopStopwatch_textBox.Text = st.ElapsedMilliseconds.ToString();
            st.Reset();

            // Progression
            st.Start();
            prog7Amount = decimal.Truncate(N / 7);
            prog7Sum = (7 + prog7Amount * 7) * prog7Amount / 2; //Сначала считаем сумму для прогрессии An=7d
            prog3Amount = decimal.Truncate(N / 3);
            prog3Sum = (3 + prog3Amount * 3) * prog3Amount / 2; //Считаем сумму арифметической прогрессии An=3d
            prog21Amount = decimal.Truncate(N / 21);
            prog21Sum = (21 + prog21Amount * 21) * prog21Amount / 2; //Нужно исключить числа, делящиеся на 21. Считаем сумму прогрессии An = 21d
            progTotalSum_textBox.Text = Convert.ToString(prog3Sum + prog7Sum - prog21Sum); //Итоговый результат
            prog3Amount_textBox.Text = Convert.ToString(prog3Amount + prog7Amount - prog21Amount);
            st.Stop();
            progStopwatch_textBox.Text = st.ElapsedMilliseconds.ToString();

Отправлено: 16:31, 27-11-2013 | #10

Название темы: Помогите с алгоритмом