Тема: Програма, яка відгадує закреслену цифру
Невеликий математичний трюк
1) Загадайте будь-яке чотирьох значне число
2) Поміняйте в ньому цифри як завгодно
3) Відніміть від більшого числа менше
4) В різниці закресліть будь-яку одну цифру
5) Введіть цифри що залишились, програма відгадає яку цифру ви закреслили
Наприклад
1) 4372
2) 2743
3) 4372 - 2743 = 1629
4) 1629
5) 129 -> 6
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
int x, arr_x[3];
cout << "Загадайте будь-яких чотири цифри, помiняйте мiсцями цифри в будь якому порядку, вiд бiльшого числа вiднiмiть менше, в рiзницi що в вас вийде закреслiть будь яку цифру та введiть що осталось (коли ви викрислите цифру в вас має залишитись три або двi цифри їх i потрiбно ввести) я спробую вiдгадать що за цифру ви викреслили \nВведiть ->";
cin >> x;
for (int i = 2; i >= 0; i--, x /= 10) arr_x[i] = x % 10;
int ind = 0;
while ((ind + arr_x[0] + arr_x[1] + arr_x[2]) % 9 != 0) ind++;
ind == 0 ? cout << "На жаль я можу сказати точно що ви закреслили це 0 або 9" : cout << ind;
getch();
return 0;
}
Програма
https://сайт-злодій/d/7k5NAuzag4sZ8
Чому так
якщо 4372 і 2743 додати по цифрах (4+3+7+2) то перше і друге число матимуть однакову суму 16, а також однакову остачу (4/9 = 0,444; 3/9 = 0,333; ...) при віднімані остача скоротиться і ми одержимо число що кратне дев'яти, тому щоб відгадати цифру яка була закреслена достатньо додавати одиницю доти доки не отримаємо суму кратну дев'яти
(1 + 2 + 9 + 0) / 9 == 1,333
...
(1 + 2 + 9 + 5) / 9 == 1,888
(1 + 2 + 9 + 6) / 9 == 2 - два кратне дев'яти тому це число було закреслене