Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
25.11.2011, 11:31   #1
gobL1n
Новичок
Регистрация: 25.11.2011
Сообщений: 9
Репутация: 0 (0)
Задача. Совершенное число / С++ для начинающих

Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
25.11.2011, 11:31
AdAgent
Объявления
25.11.2011, 12:47   #2
Байт
Форумчанин
Регистрация: 24.12.2010
Сообщений: 6,664
Репутация: 8449 (4642)
Лучшие ответы: 349
Задача. Совершенное число

Цитата Сообщение от gobL1n Посмотреть сообщение
Дано натуральное число N. Если это сложно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
Кто чего понял? Я - нет.
Другие темы раздела
C++ Сортировка двумернного массива
Подскажите, пожалуйста, как правильно поставить условие в цикле, чтобы после ввода номер строки, компилятор проверял упорядочена ли выбранная строка, двумерного массива, по возрастанию/убыванию/не упорядочена, и выводить соответствующее сообщение) #include "iostream.h" #include "stdlib.h"...
C++ (подскажите в чем логическая ошибка в этом упражнении)
Упражнение 2.4 (подскажите в чем логическая ошибка в этом упражнении) Что делает следующий фрагмент кода? В чем состоит логическая ошибка? (Отметим, что операция взятия индекса () правильно применена к указателю pia. Объяснение этому факту можно найти в разделе 3.9.2.) int *pi = new int(10);...
25.11.2011, 12:57  [ТС]   #3
gobL1n
Новичок
Регистрация: 25.11.2011
Сообщений: 9
Репутация: 0 (0)
Задача. Совершенное число

Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
25.11.2011, 13:02   #4
Thinker
Форумчанин
Эксперт C++
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4179 (2153)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
25.11.2011, 13:02
AdAgent
Объявления
25.11.2011, 13:07   #5
Байт
Форумчанин
Регистрация: 24.12.2010
Сообщений: 6,664
Репутация: 8449 (4642)
Лучшие ответы: 349
Задача. Совершенное число

Цитата Сообщение от Thinker Посмотреть сообщение
Байт, совершенное число это когда оно совпадает с суммой своих делителей, не равных этому числу. Требуется путем замены не более одной цифры числа получить совершенное число и из всех таких возможных замен найти максимальное совершенное число.
из поста #3 я это кажется начал понимать. Что такое совершенное число, я догадываюсь. А вот из поста #1 я ничего понять не смог. Ладно, попробуем.
25.11.2011, 13:10   #6
Thinker
Форумчанин
Эксперт C++
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4179 (2153)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Цитата Сообщение от Байт Посмотреть сообщение
из поста #3 я это кажется начал понимать. А вот из поста #1 я ничего понять не смог.

Не по теме:

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

25.11.2011, 13:22   #7
Байт
Форумчанин
Регистрация: 24.12.2010
Сообщений: 6,664
Репутация: 8449 (4642)
Лучшие ответы: 349
Задача. Совершенное число

Код 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);
}
Вот как-то так.
25.11.2011, 13:32   #8
Thinker
Форумчанин
Эксперт C++
Регистрация: 26.08.2011
Сообщений: 3,819
Репутация: 4179 (2153)
Записей в блоге: 5
Лучшие ответы: 107
Задача. Совершенное число

Байт, рассматриваются собственные делители, поэтому
Код C++
1
for(i=1, s=0; i <= (n >> 1); i++)
25.11.2011, 13:41   #9
BRcr
Модератор
Регистрация: 03.02.2011
Сообщений: 3,805
Репутация: 2887 (1576)
Записей в блоге: 6
Лучшие ответы: 88
Задача. Совершенное число

Байт, а можете слегка прокомментировать вот эти строчки, что-то не могу никак врубиться
Код 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;
25.11.2011, 14:16   #10
Байт
Форумчанин
Регистрация: 24.12.2010
Сообщений: 6,664
Репутация: 8449 (4642)
Лучшие ответы: 349
Задача. Совершенное число / С++ для начинающих

Код 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] не точка, а запятая
25.11.2011, 14:16
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Pascal ABC Задано целое число N. Найти ближайшее к нему совершенное число
Задано целое число N. Найти ближайшее к нему совершенное число
Pascal ABC русяш 29.10.2013 20:16
C++ Совершенное число
В линейном динамическом массиве уничтожить все совершенные числа. Совершенное число (сумма делителей = самому числу) Например 6 = 1 +2 +3
С++ для начинающих kaznachey1993 07.06.2012 15:40
C++ Совершенное число. Задача
Дано натуральное число N. Если это возможно, заменить любую из его цифр (только одну) так, чтобы получилось максимальное совершенное число.
С++ для начинающих gobL1n 22.12.2011 14:43
Pascal ABC Функция: простое число, совершенное число, число Фиббоначи, евклид, Факториал, степень.
Срочно нужна ваша помощь. все программы на школьном компе и я их не помню. они нужны срочно.
Pascal ABC mr.Gubaydullin 11.12.2011 14:48
Pascal совершенное число
Вводится натуральное число n. Определить, является ли оно совершенным. Например 6 - совершенное число, т.к 6=1+2+3
Pascal (Паскаль) Василий-Робот 15.11.2009 00:18
Опции темы


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