Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
#1

Постоянная Капрекара. - C++

04.05.2011, 20:56. Просмотров 1424. Ответов 1
Метки нет (Все метки)

Постоянная Капрекара
(Время: 1 сек. Память: 16 Мб Сложность: 22%)

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

Требуется написать программу, которая находит эту постоянную и количество шагов для ее получения из заданного четырехзначного числа.
Входные данные

Входной файл INPUT.TXT содержит одну строку, в которой записано четырехзначное число.
Выходные данные

В выходной файл OUTPUT.TXT записываются: в первой строке постоянная Капрекара, во второй – количество шагов для ее получения.
Пример
INPUT.TXT
1234
OUTPUT.TXT
6174
3
Не понятны входные данные.

Добавлено через 23 минуты
Решение :
C++
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
class result {
public:
    result(int kaprecar,int steps) :_kaprecar(kaprecar), _steps(steps) {
    
    }
    int kaprecar() {        
        return _kaprecar;
    }
    int steps() {
        return _steps;
    }
private:
    int _kaprecar;
    int _steps;
};
result calc(int n) {
    typedef vector<char> dVector;
    dVector digits;
    int iterCount = 0; 
    while(true) {
        int oldN = n;
        int count = 4;
        while(count --> 0) {
            digits.push_back(n % 10);
            n /= 10;       
        }
        sort(digits.begin(), digits.end(), less<int>()); 
        int n1 = 0, n2 = 0, multip = 1;
        for(dVector::const_iterator it = digits.begin(); it != digits.end(); ++it) {           
            n1 = n1 * 10 + *it;
            n2 = *it *multip + n2;         
            multip *= 10;
        }
        digits.clear();   
        n = n2 - n1;
        ++iterCount;
        if(oldN == n) {
            return result(n, iterCount - 1);           
        }
    }
}
int main() {
    int n;  
    freopen("INPUT.TXT", "r", stdin);
    freopen("OUTPUT.TXT", "w", stdout);
    cin >> n;
    result r = calc(n);
    cout << r.kaprecar() << endl << r.steps() << endl;
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2011, 20:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Постоянная Капрекара. (C++):

Число, переходящее само в себя, - постоянная Капрекара - C++
Доброго времени суток! Не получается решить задачку! Возьмем четырехзначное число, в котором не все цифры одинаковы, например 6264....

постоянная ссылка - C++
Что такое &quot;постоянная ссылка&quot;? Странный вообще термин. Ссылка же вроде по определению постоянна (является константным указателем). Что...

Постоянная ошибка - C++
Здравствуйте. Пишу программу по расчёту мин. кол-ва банкнот и монет для набора суммы. При целых суммах всё нормально, но при вводе суммы с...

измерения,задержка,цикличность,постоянная - C++
Здраствуйте не знаю как реализовать программа(задается температура - измерянная, заданая и задается скорость): нужно чтобы если...

Запись из файла двумерного массива N x 2, где N -величина не постоянная - C++
Много тем пересмотрел, но везде массив имел постоянные размеры, тут же - количество строк может меняться. Подскажите как записать в массив...

Записать константу "Гравитационная постоянная" - C++
Как написать гравитационное постоянная G=6,67×10^−11 на c++

1
Shaykemelov
9 / 9 / 2
Регистрация: 14.11.2011
Сообщений: 27
29.12.2011, 10:35 #2
все правильно просто в файле "input.txt" задайте входные данные
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 10:35
Привет! Вот еще темы с ответами:

Постоянная Капрекара - Turbo Pascal
Нужна программа, которая определяет количество этапов, которые нужно выполнить что бы получить постоянную Капрекара. Первоначальное число...

Постоянная Капрекара - Turbo Pascal
Возьмем четырехзначное число, в котором не все цифры одинаковы, например 6264. Расположим цифры сначала в порядке убывания - 6642; затем,...

Перевести число в постоянную Капрекара и вывести количество шагов - Python
Нужно превратить четырехзначное число в число капрекара вывести его и вывести количество шагов

Постоянная перезагрузка - BSOD
Месяц назад с завидной периодичностью начали появляться синие экраны. На следующий день, спустя 6-7 таких повторений система гикнулась, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru