Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Даны натуральные числа m и n. Получить сумму натур


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

Автор: 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);


Автор: 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;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)