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

Числа Армстронга. Алгоритм. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
01.02.2011, 10:20     Числа Армстронга. Алгоритм. #1
Получить все числа Армстронга, состоящие из трех или четырех цифр (указание:
натуральное число из n цифр называется числом Армстронга если сумма возведенных
в n-ую степень его цифр равна самому числу).
Пример:1³ + 5³ + 3³ = 153.
Точно знаю, что состоящих из трех цифр бывают только четыре числа
(153 = 1^3 + 5^3 + 3^3
370 = 3^3 + 7^3 + 0^3
371 = 3^3 + 7^3 + 1^3
и 407 = 4^3 + 0^3 + 7^3)

Осталось только это доказать програмно, а также посчитать для 4 цифр

По условию: массивы, множества и строки использовать нельзя!
Подскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2011, 10:20     Числа Армстронга. Алгоритм.
Посмотрите здесь:

C++ Числа армстронга
числа Армстронга C++
Числа Армстронга C++
Вывести числа Армстронга от 1 до n C++
C++ Числа Армстронга
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Merlin666
 Аватар для Merlin666
96 / 96 / 10
Регистрация: 26.12.2010
Сообщений: 220
01.02.2011, 10:24     Числа Армстронга. Алгоритм. #2
Возводишь в степень три числа, складываешь их, а потом смотришь по остаткам деления на 10-если сходятся с твоими числами-получил нужную последовательность..)
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
01.02.2011, 10:29  [ТС]     Числа Армстронга. Алгоритм. #3
Нашел нужную програмулину.. помогите с комментариями.
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
47
48
49
50
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
 
//---------------------------------------------------------------------------
 
__int64 powi(__int64 Value, int Degree)
{
        if(!Degree)
                return 1;
 
        __int64 Result=Value;
        for(int i=1;i<Degree;i++)
                Result*=Value;
        return Result;
}
 
int main(int argc, char* argv[])
{
 
        int n;
        char StrValue[255];
        cout<<"Enter n: ";
        cin>>n;
        __int64 MAX_VALUE = powi(10,n);
        __int64 Armstrong;
        __int64 OldArmstrong=-1;
 
        for(__int64 i=1;i<MAX_VALUE;i++)
        {
 
                __int64 TempValue=i;
                _i64toa(TempValue,StrValue,10);
                for(int j=0;j<=n;j++)
                {
                        Armstrong=0;
                        for(int k=0;k<strlen(StrValue);k++)
                                Armstrong+=powi((__int64)StrValue[k]-'0',j);
                        if(Armstrong==TempValue&&Armstrong!=OldArmstrong)
                        {
                                cout<<Armstrong<<"\n";
                                OldArmstrong=Armstrong;
                        }
                }
        }
        cout<<"Press any key to exit...";
        getch();
 
        return 0;
}

много не понятного, например "__int64 powi"...
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
01.02.2011, 11:17     Числа Армстронга. Алгоритм. #4
много не понятного, например "__int64 powi"...
Это просто определение функции, возвращающей 64-разрядный целый результат.
При твоих ограничениях (4 цифры) можно всюду заменить __int64 на просто int
Yandex
Объявления
01.02.2011, 11:17     Числа Армстронга. Алгоритм.
Ответ Создать тему
Опции темы

Текущее время: 09:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru