Интересная попралась задачка.
Напишите программу которая найдет три нечетных числа, идущих подряд, для которых правдивы утверждения:a < b < c, и a2+b2+c2 равно четырехзначному числу у которого все цифры одинаковы (т.е 1111, 8888 итп).
Написал для начала на си:
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 51 52 53 54 55 56 57 58 59 60 61 |
// che_numbers.cpp: определяет точку входа для консольного приложения. // #include <iostream> using namespace std; bool is_even_number(int a) { return a % 2 == 0; } bool isOnesNumber(int N) { int d=0, dold =0; dold = N % 10; while (N != 0) { d = N % 10; if (d != dold) { return false; } N = N / 10; dold = d; } return true; } int numbersCount(int N) { int d=0, count=0; while (N != 0) { d = N % 10; N = N / 10; count++; } return count; } bool isCond1(int a, int b, int c) { return (a < b) && (b < c) && (a < c); } bool cond2(int a, int b, int c) { return (isOnesNumber(a+b+c) && numbersCount(a+b+c) == 4); } int _tmain(int argc, _TCHAR* argv[]) { int i = 0; while (numbersCount(i+i+2+i+4) <= 4) { if (!is_even_number(i) && isCond1(i,i+2,i+4) && cond2(i,i+2,i+4)) { cout << i << " " << i+2 << " " << i+4 << " " << " sum=" << (i+2)+i+(i+4) << endl; } i++; } system("Pause"); return 0; } |
В этой программе куча самописных функций. Начну с них, так как они выполняют бОльшую часть работы.
- bool is_even_number(int a) — проверяет, является ли число четным
- bool isOnesNumber(int N) — проверяет, состоит ли число из одинаковых цифр или нет
- int numbersCount(int N) — считает количество цифр в числе
- bool isCond1(int a, int b, int c) — проверка первого условия задачи
- bool cond2(int a, int b, int c) — проверка второго условия. Она наиболее интересная. В ней вызывается функция bool isOnesNumber(int N), а потом проверяется что бы число получившееся от сложения параметов… Количество цифр в этом числе, не превосходило 4.
Функции есть, теперь их нужно правильно вызвать. В основной функции, main, происходит все так:
По условию задачи, сумма трех чисел равна четырехзначному числу, этим условием и ограничен цикл. Внутри есть еще один блок, где проверяются условия… По порядку, нужно что бы… :
- Число было не четным
- числа подходили под 1е условие
- и подходили под второе
И напоследок: Скачать проект в Visual Studio архивом.