Забавные числа и математика.
В мире существует множество забавных чисел. Например, 153. Его история:
первый член последовательности равен любому натуральному числу n, кратному 3, а каждый последующий член равен сумме кубов цифр её предыдущего члена. Можно доказать, что члены любой такой последовательности начиная с некоторого места равны 153. (Доказывать я НЕ буду, хотите -- сами)
Программа на C++:
code:
/************************************************
* num153_main.cpp (C) 2005 by PinGUIWin *
* v0.1.1 (Lozhki.net Edition) *
* Compiled by MVS C++ 7.1.3088 (.NET) *
************************************************/
#define UNICODE
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
#define TYPE unsigned __int64
#define CUBE(X) ((X) * (X) * (X))
TYPE digit_cube(TYPE n)
{
TYPE x = 0, y = 0;
while(n)
{
y = n % 10;
n /= 10;
x += CUBE(y);
}
return x;
}
int IsDividedBy3(TYPE n)
{
TYPE x = 0, y = 0;
while(n)
{
y = n % 10;
n /= 10;
x += y;
}
return !(x % 3);
}
int _tmain(int argc, TCHAR *argv[])
{
TYPE x = 0;
_tprintf("Input x : (x > 1) && (x mod 3 == 0). x = ");
_tscanf(_T("%I64d"), &x);
if(x > 1 && IsDividedBy3(x))
{
int i = 1;
do
{
x = digit_cube(x);
_tprintf(_T("%2d. x = %I64d\n"), i, x);
i++;
}while(x != (TYPE)153);
}
else _tprintf(_T("x = %I64d is NOT divided by 3 or < 1!\n"));
_tprintf(_T("Press any key to exit...\n"));
_getch();
return 0;
}
Пример работы:
code:
Input x : (x > 1) && (x mod 3 == 0). x = 444
1. x = 192
2. x = 738
3. x = 882
4. x = 1032
5. x = 36
6. x = 243
7. x = 99
8. x = 1458
9. x = 702
10. x = 351
11. x = 153
Press any key to exit...
__________________
Личный блог: http://alex.chkv.net/. ЖЖ: http://achuikov.livejournal.com/
Все делается для того, что бы ничего не делать!
Прастите миня за арфаграфию и пунхтуацыю!
"Крути руля!.." (c) ГАИ г. Аксай.
Адрес поста | Один пост | Сообщить модератору | IP: Logged