Как правильно вывести число Y?
Дано двузначное целое число ?.
Все цифры должны быть не равны нулю.
Определить четырехзначное число ? :
- первая цифра ? равна остатку от деления на 10 произведения всех цифр числа ?;
- вторая цифра равна остатку от деления второй цифры числа ? на первую цифру числа ?;
- третья цифра ? равна остатку от деления суммы всех цифр числа ? на вторую цифру числа ?.
- четвертая цифра ? равна остатку от деления первой цифры числа ? на вторую цифру числа ?; Должно быть выведено именно число ?, (оно может иметь меньше разрядов, если первые цифры получатся равными нулю), а не выведены на экран последовательно четыре цифры. Вот мой код:
//Вывести число Y
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int x;
cout << "Введите двузначное число: ";
cin >> x;
int d[4];
for (int i = 0; x; x % 10 *d[0]*d[1]*d[2]*d[3] )
d[i++] = d[2] % d[1];
for (int i1 = 0; x; x % 10 * x)
d[i1++] = d[3] % d[2];
for (int i2 = 0; x; x % 10 * x)
d[i2++] = d[1] % d[2];
x = d[3]+d[2] * 100 + d[1] * 10 + d[0];
cout << x;
}
Думаю здесь можно обойтись без цикла for и избавиться от массива. Но я плохо представляю как произвести рефакторинг кода. Можете подсказать как правильно реализовать условие задачи?
Ответы (2 шт):
Автор решения: Mikhailo
→ Ссылка
Да чтож это такое... :)
int x2 = x%10;
int x1 = x/10;
int y3 = (x1*x2)%10;
int y2 = x2%x1;
int y1 = (x1+x2)%x2;
int y0 = x1%x2;
int y = y3*1000+y2*100+y1*10+y0;
Какие того же типа задания будут дальше?
Автор решения: vp_arth
→ Ссылка
// X=xw
// Y=yzta
x = X / 10
w = X % 10
y = (x * w) % 10
z = w % y
t = (x + w) % w
a = x % w
Y = ((y * 10 + z) * 10 + t) * 10 + a