Решение задачи Постоянная Капрекара с Acmp

Без пояснения   Просмотров: 27


Возьмем четырехзначное число, в котором не все цифры одинаковы, например 6264. Расположим цифры сначала в порядке убывания - 6642; затем, переставив их в обратном порядке, получим 2466. Вычтем последнее число из 6642. На следующем шаге с полученной разностью проделаем тоже самое. Через несколько таких действий получится число, переходящее само в себя и называемое постоянной Капрекара.

Код

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n, i = 0, n1,t1,t2;
    short a[4];
    cin >> n;
    while(1){
        n1 = n;
        a[0] = n / 1000;
        a[1] = n / 100 % 10;
        a[2] = n / 10 % 10;
        a[3] = n % 10;
        sort(a,a + 4);
        t2 = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
        t1 = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];
        n1 = t1 - t2;
        ++i;
        if(n1 == n)
            break;
        n = n1;
    }
    cout << n << endl << --i;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться