Даны натуральные числа m и n. Получить сумму натур

 
0
 
C++
ava
Dwarf45 | 13.12.2016, 17:37
Здравствуйте , помогите решить задачку , среда разработки DevC++ (значения m,n
вводится с клавиатуры ) Как я понял решить нужно через цикл .

Даны натуральные числа m и n. Получить сумму натуральных чисел, меньших n, квадрат суммы цифр которых меньше m. 
Kommentare (2)
ava
vpf | 13.12.2016, 19:28 #
Дано n и m найти сумму N1 согласно условия.

Сумма натуральных чисел от 1 до k равна
S = (k+1)*k/2
Обратное уравнение для нахождения k
k^2+k-2*S = 0
Решение основано на этих двух уравнениях
Прикладываю код на Matlab, его только переложить на C++

clc
% дано  n и m  , найти N1
n = 8;
m = 984;

S = floor(sqrt(m));
res = roots([1,1,-2*S]); % res=[k1,k2]
k = floor(res(2));% k2 всегда больше нуля поэтому берем его и округляем

if(n > k)
    N1 = (k+1)*k/2;
else
    N1 = (n+1)*n/2;
end    
disp(N1);

ava
feodorv | 14.12.2016, 00:53 #
А я понял так:

#include <stdio.h>

int test( int num, int m)
{
  int dsum = 0;

  while( num > 0 )
  {
    dsum += num % 10;
    num /= 10;
  }

  return (dsum * dsum < m);
}

int main()
{
  int n, m;
  int sum = 0, num;

  printf( "Enter n & m:" );
  scanf( "%d %d", &n, &m);

  for( num = 1; num < n; ++num)
    if( test( num, m) ) sum += num;

  printf( "\nsum = %d\n", sum);

  return 0;
}
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
ava  feodorv   vpf   Dwarf45
advanced
Absenden