Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
1

Найти сумму всех чисел от а до b кратных 13 и 5

25.09.2012, 20:33. Показов 2933. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот что я пока что написал... Как сложить значения не знаю... выходит бурда полная...
C++
1
2
3
4
5
6
7
8
9
10
{   unsigned long a,b,i;
    cin >> a;
    cin >> b;
    for (i=a;i<b;i++)
    {
        if (i%13==0) 
            if (i%5==0)
    cout <<i;
    }
}
в общем прога выводит не сумму, а лишь числа кратные 5 и 13...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2012, 20:33
Ответы с готовыми решениями:

Найти сумму всех целых чисел кратных, кратных 5, из отрезка [A,B]
Помоги пожалуйста

Найти сумму всех чисел от a до b, кратных 3, но не кратных 7
50. Найти сумму всех чисел от a до b, кратных 3, но не кратных 7.

Найти сумму всех чисел, кратных 2, но не кратных 10
Найти сумму всех чисел, кратных 2, но не кратных 10.

Найти сумму всех N-значных чисел, кратных k
найти сумму всех N-значных чисел, кратных k(1 больше или равно N меньше или равно 4)

12
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 20:35 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
   unsigned long a,b,i, sum = 0;
   cin >> a;
   cin >> b;
   for (i=a;i<b;i++)
   {
      if (i%13==0) 
      {
         sum += i;
         cout << i;
      }
      else if (i%5==0)
      {
         sum += i;
         cout <<i;
      }
   }
   cout << sum;
 }
1
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
25.09.2012, 21:28  [ТС] 3
Цитата Сообщение от I.M. Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
   unsigned long a,b,i, sum = 0;
   cin >> a;
   cin >> b;
   for (i=a;i<b;i++)
   {
      if (i%13==0) 
      {
         sum += i;
         cout << i;
      }
      else if (i%5==0)
      {
         sum += i;
         cout <<i;
      }
   }
   cout << sum;
 }
спасибо, но программа выдает полную ерунду...

Добавлено через 43 минуты
товарищи может есть еще какие нибудь соображения? Это моя вторая программа, так что самостоятельно не могу пока сообразить что к чему к сожалению...
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.09.2012, 21:35 4
Mishaka, Для Вас I.M. написал программу вычисляющую сумму всех чисел от а до b кратных 13 или 5. Если нужно: найти сумму всех чисел от а (включительно) до b (включительно) кратных 13 и одновременно кратных 5, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
   unsigned long a,b,i, sum = 0;
   cin >> a;
   cin >> b;
   for (i=a;i<=b;i++)
   {
      if (i%13==0 && i%5==0)  
         sum += i;
   
   }
   cout << sum;
 }
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2012, 21:38 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
long Sum(long a, long b)
{
   long i, n;
   for (i = a; i <= b && i % 65; i++)
      ;
   n = (b - i) / 65 + 1;
   return i * n + (n - 1) * n * 65 / 2;
}
 
int main()
{
   printf("%ld\n", Sum(65, 195));
   return 0;
}
1
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
25.09.2012, 21:40  [ТС] 6
Цитата Сообщение от I.M. Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
   unsigned long a,b,i, sum = 0;
   cin >> a;
   cin >> b;
   for (i=a;i<b;i++)
   {
      if (i%13==0) 
      {
         sum += i;
         cout << i;
      }
      else if (i%5==0)
      {
         sum += i;
         cout <<i;
      }
   }
   cout << sum;
 }
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Mishaka, Для Вас I.M. написал программу вычисляющую сумму всех чисел от а до b кратных 13 или 5. Если нужно: найти сумму всех чисел от а (включительно) до b (включительно) кратных 13 и одновременно кратных 5, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
   unsigned long a,b,i, sum = 0;
   cin >> a;
   cin >> b;
   for (i=a;i<=b;i++)
   {
      if (i%13==0 && i%5==0)  
         sum += i;
   
   }
   cout << sum;
 }
это и требовалось=) спасибо, я примерно так все и делал, просто по неопытности не знал такого литерала +=
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2012, 21:45 7
Разные способы имеются решения данной простой задачи: посты 4 и 5. При этом так как 5 и 13 взаимно просты, то условия
if (i % 5 == 0 && i % 13 == 0)
и
if (i % 65 == 0)
эквивалентны
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.09.2012, 21:52 8
Цитата Сообщение от Thinker Посмотреть сообщение
Разные способы имеются решения данной простой задачи: посты 4 и 5. При этом так как 5 и 13 взаимно просты, то условия
if (i % 5 == 0 && i % 13 == 0)
и
if (i % 65 == 0)
эквивалентны
я еще немного добавлю: если важна скорость вычисления, то из перечисленных вариантов решения - вариант Thinker самый быстрый (но есть быстрее).
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2012, 21:55 9
Цитата Сообщение от valeriikozlov Посмотреть сообщение
но есть быстрее

Не по теме:

интуиция подсказывает, что есть, но вот сообразить не могу с ходу, кроме того, что в #5...Хотя, от суммы от 0 до b вычитаем сумму от 0 до а плюс a (в завмсимомти от делимости на 65). Такой способ?

0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.09.2012, 22:03 10
Цитата Сообщение от Thinker Посмотреть сообщение
интуиция подсказывает, что есть, но вот сообразить не могу с ходу, кроме того, что в #5...
в этотом варианте задачи мало будет ускорения (но при других данных может быть существенное):

Цитата Сообщение от Thinker Посмотреть сообщение
for (i = a; i <= b && i % 65; i++)
;
здесь нужное i Вы (я знаю это) можете найти не методом перебора, а арифметическими действиями )
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.09.2012, 22:05 11
Лучший ответ Сообщение было отмечено как решение

Решение

Придумал вот как
C++
1
2
3
4
5
6
7
long Sum(long a, long b)
{
   long na, nb;
   na = a / 65 + 1;
   nb = b / 65 + 1;
   return (nb - 1) * nb * 65 / 2 - (na - 1) * na * 65 / 2 + (a % 65 ? 0 : a);
}
Ну, деление на 2 само собой заменится сдвигами, это так, для наглядности
0
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
27.09.2012, 18:39  [ТС] 12
Цитата Сообщение от Thinker Посмотреть сообщение
Придумал вот как
C++
1
2
3
4
5
6
7
long Sum(long a, long b)
{
   long na, nb;
   na = a / 65 + 1;
   nb = b / 65 + 1;
   return (nb - 1) * nb * 65 / 2 - (na - 1) * na * 65 / 2 + (a % 65 ? 0 : a);
}
Ну, деление на 2 само собой заменится сдвигами, это так, для наглядности
Ух! Что-то серьезное=-0. Я только начинаю изучать этот язык, так что в принципе для меня главное-это хоть какая-нибудь работоспособность программы=) об оптимизации я могу пока только мечтать=)
0
Thinker
27.09.2012, 18:48     Найти сумму всех чисел от а до b кратных 13 и 5
  #13

Не по теме:

Mishaka, здесь алгоритм главное придумать, а потом уже его реализация.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2012, 18:48

Найти сумму всех n-значных чисел, кратных к
Найти сумму всех n-значных чисел, кратных к (к=1,2,3). Как это решить через while?

Найти сумму всех n-значных чисел, кратных k
Найти сумму всех n-значных чисел, кратных k (1 ≤ п ≤ 4).

Найти сумму всех чисел в последовательности, кратных 11
2)Найти сумму всех чисел в последовательности (m &lt; n), кратных 11. помогите решить пожалуйста...

Найти сумму всех n-значных чисел, кратных k
Здравствуйте!!! Нужна ваша помощь! ОЧЕНЬ СРОЧНО! Помогите, пожалуйста) Заранее спасибо) 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru