Числа Армстронга
|
|
Ramilyanamana | Дата: Суббота, 11 Октября 2014, 15:46 | Сообщение # 1 |
Биззи Джей Ужасный
Сейчас нет на сайте
| Дали нам, значится, вот такую задачу: Натуральное число n, называется числом Армстронга если это число равно сумме цифр, из которых состоит это число, каждое из которых возведено в степень, равную количеству этих цифр. Пример: 153=1^3+5^3+3^3. Нужно написать программу, которая будет вычислять все двух- и трех-значные числа Армстронга. Помогите пожалуйста)) Мне уже ничего в голову не приходит. Пробовал и в массиве работать и без него. Не выходит и все тут. Ах да, программа должна быть написана на Borland C++. Заранее спасибо)
|
|
| |
goldsphere | Дата: Суббота, 11 Октября 2014, 17:56 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Код for(int i=100;i<=999;++i) if((i/100)*(i/100)*(i/100) + ((i%100)/10)*((i%100)/10)*((i%100)/10) + (i%10)*(i%10)*(i%10) == i) cout<<i<<endl; for(int i=10;i<=99;++i) if((i/10)*(i/10) + (i%10)*(i%10) == i) cout<<i<<endl; Получается, что двухзначных чисел армстронга нет, поэтому можно второй цикл просто убрать.
FinderX - Android Аркада
|
|
| |
Ramilyanamana | Дата: Воскресенье, 12 Октября 2014, 02:31 | Сообщение # 3 |
Биззи Джей Ужасный
Сейчас нет на сайте
| ну я лучше оставлю его. а то еще докопается на этот счет. просто на экране выведу, что нет таких
|
|
| |
-l33t-h4xx- | Дата: Воскресенье, 12 Октября 2014, 17:54 | Сообщение # 4 |
участник
Сейчас нет на сайте
| В более общем виде. Моя вычисляет ещё и четырёхзначные. Код #include <iostream> #include <cmath> using namespace std;
int decimalLength (int n) { int l = 0; while (n) { n /= 10; l++; } return l; }
// Название случайное int armstrongWeight (int n) { int l = decimalLength(n); int sum = 0;
while (n) { sum += pow(n%10, l); n /= 10; }
return sum; }
int main (int argc, char *argv[]) { for (int i = 100; i < 10000; i++) { if (i == armstrongWeight(i)) { cout << i << endl; } } }
Как правильно задавать вопросы
Сообщение отредактировал -l33t-h4xx- - Воскресенье, 12 Октября 2014, 17:59 |
|
| |
Ramilyanamana | Дата: Вторник, 14 Октября 2014, 08:07 | Сообщение # 5 |
Биззи Джей Ужасный
Сейчас нет на сайте
| goldsphere, Сегодня принес код. На что препод ответила, что число Армстронга вычисляется не так. Я ей открыл википедию и ткнул носом в формулу. В ответ на это она принесла задачник, в котором было это задание, и сказала, что это число нужно вычислять по формуле вида: 512=(5+1+2)^3, а не 153=1^3+5^3+3^3. И вот теперь прошу рассудить, кто же прав? Она говорит, что все кто ей приносил эту задачу в программе выводили 2 числа: 512 и 81, а не как в вашем коде: 153, 370, 371 и 407.
|
|
| |
goldsphere | Дата: Вторник, 14 Октября 2014, 08:39 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Возможно эти все задачником и пользовались, я лишь основывался на информации от вас и вики. А там именно те 4 числа, что выдаёт мой код.
FinderX - Android Аркада
|
|
| |
OpenGOO | Дата: Вторник, 14 Октября 2014, 10:31 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Цитата Ramilyanamana ( ) Натуральное число n, называется числом Армстронга если это число равно сумме цифр, из которых состоит это число, каждое из которых возведено в степень, равную количеству этих цифр. Пример: 153=1^3+5^3+3^3 Т.е. было дано условие задачи как наверху, а оказалось что надо считать не так 1^3+5^3+3^3 а вот так (1+5+3)^3?
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
Lertmind | Дата: Вторник, 14 Октября 2014, 12:44 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Ramilyanamana, конечно она не права, не трать зря время на размышления, просто сделай своему преподу-неудачнику что она хочет.
|
|
| |
Ramilyanamana | Дата: Вторник, 14 Октября 2014, 15:48 | Сообщение # 9 |
Биззи Джей Ужасный
Сейчас нет на сайте
| Lertmind, так и сделал. Но неужели нельзя было почитать про это число где-нибудь в интернете, а не самой думать, как оно должно высчитываться.
|
|
| |