Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
gobL1n
Новичок
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 9
25.11.2011, 11:31     Задача. Совершенное число
  #1
Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
AdAgent
Объявления
25.11.2011, 11:31
Байт
Форумчанин
8453 / 4645 / 349
Регистрация: 24.12.2010
Сообщений: 6,664
25.11.2011, 12:47
  #2
Цитата Сообщение от gobL1n Посмотреть сообщение
Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Кто чего понял? Я - нет.
gobL1n
Новичок
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 9
25.11.2011, 12:57  [ТС]
  #3
Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Thinker
Форумчанин
Эксперт C++
4180 / 2154 / 107
Регистрация: 26.08.2011
Сообщений: 3,821
Записей в блоге: 5
25.11.2011, 13:02
  #4
Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
Байт
Форумчанин
8453 / 4645 / 349
Регистрация: 24.12.2010
Сообщений: 6,664
25.11.2011, 13:07
  #5
Цитата Сообщение от Thinker Посмотреть сообщение
Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
из поста #3 я это кажется начал понимать. Что такое совершенное число, я догадываюсь. А вот из поста #1 я ничего понять не смог. Ладно, попробуем.
Thinker
Форумчанин
Эксперт C++
4180 / 2154 / 107
Регистрация: 26.08.2011
Сообщений: 3,821
Записей в блоге: 5
25.11.2011, 13:10
  #6
Цитата Сообщение от Байт Посмотреть сообщение
из поста #3 я это кажется начал понимать. А вот из поста #1 я ничего понять не смог.

Не по теме:

Там же одно и то же Понял, что вы пошутили

Байт
Форумчанин
8453 / 4645 / 349
Регистрация: 24.12.2010
Сообщений: 6,664
25.11.2011, 13:22
  #7
Код C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int Sov(int n) 
{ int i, s;
for(i=1, s=0; i<=n; i++) if ((n%i)==0) s+=i;
if (s==n) return 1;
else return 0;
}
main()
{ int n, M; char s[20]. t[20];
M = -1;
strcpy(s, _argv[1]);
for(i=0; i<strlen(s); i++) {
 strcpy(t, s);
 for(j=0; j<10; j++) {
   t[i] = '0'+j;
   if (t[i] == s[i]) continue;
   n = atoi(t);
   if (Sov(n) && n> M) M = n;
 }
}
if (M > 0) printf("M=%d\n", M);
}
Вот как-то так.
Thinker
Форумчанин
Эксперт C++
4180 / 2154 / 107
Регистрация: 26.08.2011
Сообщений: 3,821
Записей в блоге: 5
25.11.2011, 13:32
  #8
Байт, рассматриваются собственные делители, поэтому
Код C++
1
for(i=1, s=0; i <= (n >> 1); i++)
BRcr
Модератор
2911 / 1592 / 90
Регистрация: 03.02.2011
Сообщений: 3,879
Записей в блоге: 6
25.11.2011, 13:41
  #9
Байт, а можете слегка прокомментировать вот эти строчки, что-то не могу никак врубиться
Код C++
1
2
3
4
5
6
strcpy(s, _argv[1]);
for(i=0; i<strlen(s); i++) {
 strcpy(t, s);
 for(j=0; j<10; j++) {
   t[i] = '0'+j;
   if (t[i] == s[i]) continue;
Байт
Форумчанин
8453 / 4645 / 349
Регистрация: 24.12.2010
Сообщений: 6,664
25.11.2011, 14:16
  #10
Код C++
1
2
3
4
5
6
7
// Считаю что число дается аргументом вызова программы "proga.exe 1234"
strcpy(s, _argv[1]);  // Копирую анализируемое число.
for(i=0; i<strlen(s); i++) {  // Перебираю все цифровые позиции числа
 strcpy(t, s);  // Просто копирую исходное число во временную строку
 for(j=0; j<10; j++) {  // Цикл по кол-ву цифр
   t[i] = '0'+j;  // Заменяю i-тую цифру
   if (t[i] == s[i]) continue; // Если цифра равна исходной, ничего не делаю. Так я понял условие
Добавлено через 1 минуту
Цитата Сообщение от Thinker Посмотреть сообщение
Байт, рассматриваются собственные делители, поэтому
Код C++
1
for(i=1, s=0; i <= (n >> 1); i++)
Вы совершенно правы!
И еще одна описочка - после s[20] не точка, а запятая
gobL1n
Новичок
0 / 0 / 0
Регистрация: 25.11.2011
Сообщений: 9
09.12.2011, 13:26  [ТС]
  #11
А можно её как нибудь проще написать?
Thinker
Форумчанин
Эксперт C++
4180 / 2154 / 107
Регистрация: 26.08.2011
Сообщений: 3,821
Записей в блоге: 5
09.12.2011, 13:30
  #12
Цитата Сообщение от gobL1n Посмотреть сообщение
А можно её как нибудь проще написать?
Самый понятный код - код, написанный своими руками, код, рожденный в своей голове
silent_1991
Форумчанин
Эксперт C++
09.12.2011, 17:48     Задача. Совершенное число
  #13

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
Самый понятный код - код, написанный своими руками, код, рожденный в своей голове
..., код, скомпилированный своим компилятором и запущенный в своей операционной системе!

Yandex
Объявления
09.12.2011, 17:48
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Ответов Автор Дата
C++ Определить наибольшее простое число в файле и наименьшее совершенное
Помогите пожалуйста. Нужно создать двоичный файл, куда записать n целых чисел. Из исходного файла сформировать массивы простых и совершенных чисел. Определить наибольшее простое число в файле и...
С++ для начинающих 0 Programmist231 29.05.2014 23:50
C++ функции (вывести самое большое совершенное число)
помогите....надо вывести самое большое совершенное число............ #include <iostream> #include <locale> using namespace std; int control(int t) { int sum=0;
С++ для начинающих 12 Ilona1993 22.05.2013 21:08
C++ Найти максимальное совершенное число в последовательности
36. Вводится последовательность из N целых чисел. Найти максимальное совершенное число в последовательности, если таких несколько, вывести их количество (функцией оформить проверку числа: результатом...
С++ для начинающих 0 Dinara_rakipova 30.04.2013 13:46
C++ Совершенное число
В линейном динамическом массиве уничтожить все совершенные числа. Совершенное число (сумма делителей = самому числу) Например 6 = 1 +2 +3
С++ для начинающих 4 kaznachey1993 07.06.2012 15:40
C++ Совершенное число. Задача
Дано натуральное число N. Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
С++ для начинающих 1 gobL1n 22.12.2011 14:43
C++ Совершенное число
Определить, является ли заданное натуральное число совершенным, т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, совершенное число 6=1+2+3). #include...
С++ для начинающих 18 paRadoX-2 20.07.2011 18:41
C++ Поменять местами в массиве последнее простое число и первое совершенное
Добрый вечер всем!!! Наконец на парах начали разбирать одномерные массивы и вотже столкнулась с практическим заданием. Задан массив Х(m) целых чисел. Поменять местами в массиве последнее простое...
С++ для начинающих 9 Селявкина Мария 31.10.2010 08:26
C++ Определить, содержит ли последовательность хотя бы одно совершенное число
Вводится последовательность целых чисел, 0 - конец последовательности. Определить, содержит ли последовательность хотя бы одно совер¬шенное число. Для определения совершенного числа создать функцию....
С++ для начинающих 5 Dimaskorik 29.09.2010 10:03
Опции темы

Текущее время: 07:54. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.