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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
#1

Нумерация страниц - C++

07.02.2013, 20:49. Просмотров 1792. Ответов 17
Метки нет (Все метки)

Для нумерации M страниц книги использовали N цифр. По заданному N вывести M или 0, если решения не существует. Нумерация начинается с первой страницы.

Входные данные: Единственное число N. В книге не более 1001 страницы.

Выходные данные: Искомое количество страниц.

Пример входных данных: 27 Пример выходных данных: 18

Помогите решить пожалуйста, чтобы было не сильно замудрино...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 20:49     Нумерация страниц
Посмотрите здесь:

Нумерация не с 0, а с 1 - C++
Как начать индексацию не с 0, а с 1? хэдэр: #ifndef LIST_H #define LIST_H #include <iostream> using namespace std; class...

Нумерация массива - C++
Как провести нумерацию вектора и двумерного массива не с нуля а с единицы. Подскажите пожалуйста.

нумерация массива - C++
как изменить нумерацию элементов одномерного массива...чтобы первому элементу был присвоен номер 1, а не 0.

Нумерация месяца - C++
Доброго дня. Спорим с коллегой с какого числа начинать нумеровать месяца с 0 или с 1. Хотелось бы услышать мнения на этот счет

Нумерация фигур №/N - C++
Добрый вечер) Помогите с нумерацией не просто нумерацией 1,2,3,4 и тд. А нужно сделать так. Например: На ввод подается 7 конусов. ...

Нумерация строк матрицы - C++
Подскажите, пожалуйста, код, чтобы перед строками в матрицы выводился номер строки. Например: 1) 1 2 3 2) 4 5 6 3) 7 8 9 ...

Тип enum и нумерация - C++
Всем здрасьте ! У меня есть тип enum, который описывает что-то: enum NUM { X1, X2, X3, ...} Каждый Х, имеет свой смысл и число,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
07.02.2013, 21:17     Нумерация страниц #2
Если честно, не совсем понятно задание. N имеется ввиду система счисления или как?
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
07.02.2013, 23:59  [ТС]     Нумерация страниц #3
MrGrig, N - это количество цифр, из которых состоит число для страниц... То есть от 1 до 9 это 1 цифра, от 10 до 99, это 2 цифры, и так далее до 1001 страницы.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 716
08.02.2013, 00:03     Нумерация страниц #4
Цитата Сообщение от DarkDiablo Посмотреть сообщение
MrGrig, N - это количество цифр, из которых состоит число для страниц... То есть от 1 до 9 это 1 цифра, от 10 до 99, это 2 цифры, и так далее до 1001 страницы.
но тогда в вашем задании :
Пример входных данных: 27
это типа N?
27 цифр? и меньше 1001? круто... назовите такое число... 0000000..00001000 ?
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 00:30  [ТС]     Нумерация страниц #5
abit, Для 18 страниц нужно 27 цифр, все верно. Я имел ввиду что любое число от 10 до 99 имеет 2 цифры, а от 100 до 999 - 3 цифры. Что тут непонятного?
1+1+1+1+1+1+1+1+1+2+2+2+2+2+2+2+2+2 = 27 цифр, которые используются для 18 страниц...
Это олимпиадная задача, естественно задание с заковыркой...
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.02.2013, 00:39     Нумерация страниц #6
Вроде правильно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
    int M;
    std::cout << "Enter M: ";
    std::cin >> M;
        
    int N = 0;
    int a = 0;
    for (int x = M; x >= 1; x -= a) {
        a = 0;
        for (int j = x; j; j /= 10)
            ++a;
        ++N;
    }
    std::cout << "N = " << N << '\n';
 
    return 0;
}
Зы из M в N посчитать полегче будет)

Добавлено через 5 минут
Единственное чего тут нет так это проверки на отрицательное значение и максимально кол. страниц, но думаю, это вовсе не проблема.
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 00:47  [ТС]     Нумерация страниц #7
xtorne21st, На 33,3% проходит, считает правильно, но если вводишь например 12 либо 14, то ответ будет неправильным, так как для 10 страниц нужно 11 цифр, а для 11 страниц - 13 цифр. В каждом таком неверном случае должно выводиться 0.

Добавлено через 1 минуту
Из M в N и у меня вышло посчитать, а вот обратно... Не догнал как))
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.02.2013, 00:56     Нумерация страниц #8
Цитата Сообщение от DarkDiablo Посмотреть сообщение
xtorne21st, На 33,3% проходит, считает правильно, но если вводишь например 12 либо 14, то ответ будет неправильным, так как для 10 страниц нужно 11 цифр, а для 11 страниц - 13 цифр. В каждом таком неверном случае должно выводиться 0.
Либо условие оформлено "не верно" либо я чего-то не догоняю)). Т.е. получается результат будет "верно" только если нумерация страниц от 1 до 9? Ведь если больше, то будет "не верно"?)))

Добавлено через 1 минуту
Т.е. не совсем понятно для каких ситуаций нужно применять "0".

Добавлено через 2 минуты
У меня всё првильно выходит: вводишь M = 11, получаешь N = 10; вводишь M = 13, получашь N = 11. Для каких случаев нужен 0?
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 01:14  [ТС]     Нумерация страниц #9
xtorne21st, Давай разберем по-порядку)
1 -1 цифра, 2 - 1 цифра, 3,4,5,6,7,8,9 - тоже одна цифра
10, 11, 12 и так далее - 2 цифры.
Допустим нам надо пронумировать 14 страниц, значит нам понадобится для этого
1+1+1+1+1+1+1+1+1+2+2+2 = 15 символов. Но если мы введем, к примеру, 14 символов - то нам не хватит 1 символа для еще одной страницы, это и есть неправильный вариант, в котором нужно вывести 0. И так для всех вариантов. Как я понял, в интервале от 9 до 99, начиная с цифры 12, все дальнейшие четные цифры неверные...
Но в случае с 3 цифрами, последовательность поменяется... (По напридумывают блин задач...)

Добавлено через 11 минут
Даже, начиная с 10...
9 верно, 10 неверно, 11 верно, 12 неверно, 13 верно, 14 неверно...
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.02.2013, 01:16     Нумерация страниц #10
Просто нужно добавить ещё один цикл который проверяет ответ
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 01:31  [ТС]     Нумерация страниц #11
Эта программа есть на паскале, но у меня не выходит ее правильно переделать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
n,m,t,kol:integer;
begin
readln(n);
repeat
inc(m);
t:=m;
 repeat
  t:=t div 10;
  inc(kol);
 until t=0;
until kol>=n;
if kol=n then writeln(m)else writeln(0);
end.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.02.2013, 01:54     Нумерация страниц #12
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
#include <iostream>
 
int main()
{
    int M;
    std::cout << "Enter M: ";
    std::cin >> M;
        
    int N = 0;
    int a = 0;
    for (int x = M; x >= 1; x -= a) {
        a = 0;
        for (int j = x; j; j /= 10)
            ++a;
        ++N;
    }
 
    int res = 0;
    for (int x = 1; res < M; ++x) {
        a = 0;
        for (int j = x; j; j /= 10)
            ++a;
        res += 1 * a; 
        if (res == M) {
            std::cout << "N = " << N << std::endl;
            return 0;
        }
    }
 
    std::cout << "Error\n";
 
    return 0;
}
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 02:12  [ТС]     Нумерация страниц #13
xtorne21st, Подправил, проверил, все считает правильно, но блин сайт на 40% принимает теперь)
Что-то тут не то... Не понятно...
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.02.2013, 02:19     Нумерация страниц #14
Или чуть более "компактней":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int N, M, a, b, res;
 
int main()
{
    std::cout << "Enter M: ";
    std::cin >> M;
        
    for (int x = M, f = 1; x >= 1; x -= a, ++f) {
        a = b = 0;
        for (int j = x; j; j /= 10)
            ++a;
        for (int j = f; j; j /= 10)
            ++b;
        ++N;
        res += 1*b;
    }
    (res == M) ? (std::cout << "N = " << N << std::endl) :
        (std::cout << "Error.\n");
 
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от DarkDiablo Посмотреть сообщение
но блин сайт на 40% принимает теперь)
Не понятно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2013, 02:25     Нумерация страниц
Еще ссылки по теме:

Нумерация элементов массива - C++
Что сделать, чтобы в конце элементы массива были пронумерованы. ...

Нумерация записей в файле - C++
Добрый день! Скажите, пожалуйста, как сделать, чтобы нумерация записей в файле, при повторном запуске программы, не прерывалась, а шла по...

Нумерация битов в битовых полях - C++
Здравствуйте! У меня есть битовое поле и юнион: struct bitfield{ bool b0:1; bool b1:1; bool b2:1; bool b3:1; bool b4:1; ...

Нумерация клеток заданной полоски - C++
Помогите пожалуйста с заданием! Дана полоска длиной 2k клеток и шириной в одну клетку. Полоску несколько раз сгибают пополам так, чтобы...

Разрядность(нумерация) элементов числа - C++
Я написал такую вот прогу: #include&lt;iostream&gt; using namespace std; void main() { int a=0, i, n, s; cin&gt;&gt;n; ...


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

Или воспользуйтесь поиском по форуму:
DarkDiablo
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
08.02.2013, 02:25  [ТС]     Нумерация страниц #15
xtorne21st, А если попробовать вариант с паскаля переделать с помощью do while?
У меня правда, при этом, кучу непонятных цифр выдает...

Добавлено через 1 минуту
"Компактный" вариант, кстати, дальше 99 не считает уже...
Yandex
Объявления
08.02.2013, 02:25     Нумерация страниц
Ответ Создать тему
Опции темы

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