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

Практика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с текстом http://www.cyberforum.ru/cpp-beginners/thread46055.html
Задача C++: Даны натуральное число n, символы s1 ...,sn.. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. а)...
C++ Выдает ошибку в строке MyErrorExit("SetConsoleMode"); MyErrorExit: не найден идентификатор Тренируюсь в консольных приложениях, видел много примеров где используется MyErrorExit("XXXXXXXXX"); У меня при использовании этой строчки выдает ошибку MyErrorExit: не найден... http://www.cyberforum.ru/cpp-beginners/thread46014.html
C++ Графический режим
Помогите пожалуйста хочу научится программировать в графическом режиме я использую Microsoft Visual Studio 2008 напишите пожалуйста программку типа "Привет мир" с коментариями
C++ Выбор компилятора по следующим критериям
Добрый день. Прошу помочь с выбором компилятора по следующим критериям (сам не знаю что выбрать): 1. Необходимо создавать просты приложения для среды Windows, с главным требованием: время отклика...
C++ Класс с полем типа LPDIRECT3DDEVICE9 http://www.cyberforum.ru/cpp-beginners/thread45953.html
Можно ли создать класс с полем типа LPDIRECT3DDEVICE9? Если да - то как! Добавлено через 28 минут 19 секунд Сам разобрался просто ошибка была!
C++ Класс с полем типа map Привет, можно ли сделать класс с полем типа map<int,int>? У меня это сделать не получается - подскажите как! подробнее

Показать сообщение отдельно
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
05.08.2009, 09:37
По поводу первой задачи.
Я тут подумал. Похоже задача разрешается и разрешается однозначно. То есть вариант разложения ровно один.
Это скорее математика, чем программирование.
Решать можно разными способами. Можно искать единственный вариант, а можно просто тупо перебрать все варианты

n=0. Мы можем получить числа p: -1, 0, 1.
n=1. Можем получить p от -4 до 4.
n=2. Можем получить p от -13 до 13.

Имеем произвольный n. Можем получить p от -(3**(n+1)-1)/2 до +(3**(n+1)-1)/2.
Различных вариантов ровно 3**(n+1).
Исходя из этой формулы если мы имеем натуральное p, но там нужно найти минимальный n, чтобы было верно: p<=(3**(n+1)-1)/2.
После того, как n определено дальше либо перебираем все a[n],...a[0].
Либо сразу вычисляем нужные значения.

Добавлено через 3 минуты 34 секунды
наверно a[n] != 0 , не понять тупость =\
Тут смайлики есть. Можно так сделать:
наверно a[n] != 0 ,
)))

Добавлено через 13 минут 50 секунд
тут как x , y , z изменять ?
В цикле например.
получаеться только с 0 до придела int
Не от 0, а от 1. В условии написано, что x,y,z - натуральные числа.
И не до предела int.
Например если у тебя n=10000, то очевидно, что нет смысла брать x>100 или y>100 или z>100.

Добавлено через 1 минуту 16 секунд
То есть имеем условие 1<=x,y,z<=sqrt(n).

Добавлено через 8 часов 48 минут 23 секунды
По поводу второй задачи.
Перебирать достаточно только x и y, z вычисляем: z=sqrt(n-x*x-y*y)
И смотрим - получилось целое число или нет.

В принципе можно еще наложить условие: x>=y>=z,
чтобы не перебирать лишние варианты. Все равно с точностью до перестановок x,y,z мы найдем все варианты.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru