Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
G00CH
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 5
#1

разложить натуральное число на сумму 9ти квадратов - C++

11.03.2012, 16:34. Просмотров 592. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Решая олимпиадную задачу (о чем она можно догадаться в заголовке топика)
у меня всплыла проблема с разложением чисел от 2 до 8ми включительно и числа 10. Остальные числа раскладываются корректно. Помогите решить проблему вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
using namespace std;
 
int main()
{
  int n;
  int a=0,b,c,d,e,f,g,h,i;
  cin >> n;
  do{
    a++;
    b=0;
 do{
    b++;
    c=0;
  do{
    c++;
    d=0;
do{
    d++;
    e=0;
do{
    e++;
    f=0;
do{
    f++;
    g=0;
do{
    g++;
    h=0;
do{
    h++;
    i=-1;
    do{
      i++;
    }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(i<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(h*h<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(g*g<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(f*f<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(e*e<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(d*d<n));  
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(c*c<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(b*b<n));
  }while((a*a+b*b+c*c+d*d+e*e+f*f+g*g+h*h+i*i!=n)&&(a*a<n));
 
  cout << a <<" " << b<< " " << c << " " << d <<" " << e<<" " << f<<" " << g<< " " << h<< " " << i;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2012, 16:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос разложить натуральное число на сумму 9ти квадратов (C++):

Дано натуральное число n. -представить его как сумму квадратов - C++
Дано натуральное число n. Если возможно, то представить его как сумму квадратов двух натуральных чисел.

Разложить натуральное число на простые множители - C++
Разложить натуральное число на простые множители.(Нужно максимально простое решение, для новичков)

Дано натуральное число N. Разложить его на простые множители - C++
Всем доброго времени суток. Очень нужна помощь с данной задачей в плане оформления, так как совсем не знаю этот язык программирования. Дано...

Натуральное число n представить в виде суммы трех полных квадратов - C++
Логической переменной t присвоить значение true или false, в зависимости от того, можно или нет натуральное число n представить в виде...

Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел? - C++
Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел? Написать программу решения этой задачи.

Найти все тройки чисел, сумма квадратов которых даёт заданное натуральное число - C++
Дано натуральное число n. Укажите все тройки x, y, z таких натуральных чисел, что x2+y2+z2=n.

2
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
11.03.2012, 16:42 #2
Рассмотрите случай, когда один из квадратов - 0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
bool finish = false;
 
void get_answer(int n, int l)
{
    if (n <= 0)
        return;
    for (int i = 0; i * i <= n; i++)
        if (l == 1)
        {
            if (n - i * i == 0)
            {
                finish = true;
                cout << i << ' ';
                return;
            }
        }
        else
        {
            get_answer(n - i * i, l - 1)
            if (finish)
            {
                cout << i << ' ';
                return;
            }
        }
}
 
get_answer(n, 9); // разложение n на сумму 9 квадратов
1
G00CH
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 5
11.03.2012, 17:35  [ТС] #3
всё исправил, сделал также разложения циклами токо на 4 числа а остальные 5 просто обозначил за 0.
спс за помощь
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2012, 17:35
Привет! Вот еще темы с ответами:

Разложить число на сумму степеней двойки - C++
помогите написать функцию, раскладывающую число на сумму степеней двойки. т.е. у меня есть 6 прав у пользователей, которые...

Дано натуральное число n. Найти все его делители и разложить его на простые числа. - C++
Привет.Помогите пожалуйста решить задчку. Заранее спасибо. Дано натуральное число n. Найти все его делители и разложить его на...

Пол-ль вводит число от 50 до 100. Программа раскладывает число на сумму 4-х квадратов, всеми возможными способами - C++
Пример: 39 = 1^2+2^2+3^2+5^2. Не получается написать код для этой задачи Помогите пож разобраться

Дано натуральное число n. Можно ли представить его в виде суммы трех квадратов натуральных чисел? - C++
Подскажите как правильно составить программу к этим задачам: 1.Дано натуральное число n. Можно ли представить его в виде суммы трех...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru