Как правильно вывести число 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
→ Ссылка