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

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

Войти
Регистрация
Восстановить пароль
 
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 140
#1

Вывести одно натуральное число – стоимость изготовления табличек - C++

18.07.2014, 09:05. Просмотров 377. Ответов 10
Метки нет (Все метки)

В Стране хотят построить город программистов Осколково. Город по плану будет большой. В нём будет N улиц, на каждой из которой по ai домов. Правительство решило применить инновации, и вместо обычных табличек с номерами домов они хотят повесить таблички с номерами домов, записанными в двоичном представлении.
После утверждения такой нумерации в городе Осколково, был произведён тендер на изготовление табличек с цифрами 0 и 1. Выигравшая компания изготовляет табличку с цифрой 0 за a рублей, а табличку с цифрой 1 за b рублей. Теперь правительство хочет узнать, сколько будет стоит изготовление табличек на дома.
Первая строка входного файла содержит три натуральных числа N (1 ≤ N ≤ 100) и a, b (1 ≤ a, b ≤ 100) – количество улиц в городе и стоимости изготовления цифр 0 и 1.
В следующих N строках содержится натуральное число ai (1 ≤ ai ≤ 100) – количество домов. Далее в строке содержатся ai натуральных чисел cj (1 ≤ cj ≤ 100) – номера домов на этой улице, для которых будут изготовлены таблички. Для одного дома может потребоваться более одной таблички.
Вывести одно натуральное число – стоимость изготовления табличек.

Пример ввода

1 1 2
3 2 2 3

Пример вывода

10
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2014, 09:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести одно натуральное число – стоимость изготовления табличек (C++):

Делится ли одно натуральное число на другое без остатка, используя операцию вычитания - C++
Напечатать программу через цикл while: Выяснить, делится ли одно натуральное число на другое без остатка, используя операцию вычитания.

Циклы: Задано натуральное число n. Найти количество натуральных чисел, не превышающих n и не делящихся ни на одно из чисел 2, 3, 5 - C++
Завтра зачет не успеваю сделать занимаюсь prologom помогите кому не сложно!!! 1)(Циклы)Задано натуральное число n. Найти количество...

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

Дано натуральное число N (N <= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на 2N - C++
Дано натуральное число N (N &lt;= 100). Построить натуральное число, состоящее из N цифр и содержащее только цифры 1 и 2, которое делится на...

Вывести одно целое число - результат вычислений.С++ - C++
Одна строка, в которой могут встречаться цифры и символы «+» и «-». Длина строки не превышает 10000 символов, значение всех чисел в ней не...

Вывести одно целое число– количество возможных разбиений войска на отряды - C++
Согласно многовековой традиции, сэр Петрейн каждую субботу ходит охотиться на дракона. Однако, за один вечер до выхода в очередной поход,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Хедин
18.07.2014, 09:27
  #2

Не по теме:

Neotwalker, Владимир Владимирович, залогиньтесь под своим именем, пожалуйста

Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 140
18.07.2014, 09:30  [ТС] #3
Сделано
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
18.07.2014, 10:01 #4
Neotwalker, как то вот так будет. Не тестировал, проверьте
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
int considePrice(const string &number, const int a, const int b)
{
    int n = number.length(), summ = 0;
    for (int i = 0; i < n; ++i)
        summ += (number[i] == '0' ? a : b);
    return summ;
}
 
int getFederalBudget()
{
    int summ = 0;
    ifstream F;
    if (!F.open("D:\\text.txt"))
    {
        cout << "Error open file!" << endl;
        return -1;
    }
    int N, a, b;
    F >> N >> a >> b;
    for (int i = 0; i < N; ++i)
    {
        int ai;
        F >> ai;
        for (int j = 0; j < ai; ++j)
        {
            string buff;
            F >> buff;
            summ += considePrice(buff, a, b);
        }
    }
    return summ;
}
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.07.2014, 10:11 #5
Хедин, не увидел в вашем решении привязки к двоичному исчислению.
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
18.07.2014, 10:16 #6
soon, перечитал только что еще раз, понял ошибку: оказывается, в файле номер дома прописывается в десятичном виде
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.07.2014, 10:26 #7
Вот сама задача, можете проверить ваше решение
http://www.e-olimp.com/problems/2777
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
18.07.2014, 11:08 #8
soon, чет я правда не пойму... забил задачу, а мне выдает ошибки. Неужели неправильно?
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
#include <stdio.h>
 
int consideHomePrice(int number, int a, int b)
{
    int summ = 0;
    while (number > 1)
    {
        summ += (number%2 == 0 ? a : b);
        number /= 2;
    }
    summ += (number == 0 ? a : b);
    return summ;
}
 
int getFederalBudget()
{
    int summ = 0, N, a, b, i, j, ai, buff;
    FILE *f = fopen("input.txt", "r");
    if (!f)
    {
        printf("Error open file!\n");
        return -1;
    }
    fscanf(f, "%d %d %d", &N, &a, &b);
    for (i = 0; i < N; ++i)
    {
        fscanf(f, "%d", &ai);
        for (j = 0; j < ai; ++j)
        {
            fscanf(f, "%d", &buff);
            summ += consideHomePrice(buff, a, b);
        }
    }
    fclose(f);
    return summ;
}
 
int main()
{
    printf("Result: %d\n", getFederalBudget());
    return 0;
}
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.07.2014, 11:28 #9
Хедин, дело, как минимум, в

C
1
printf("Result: %d\n", getFederalBudget());
Нужно просто вывести число
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
18.07.2014, 14:13 #10
soon, блин) ща пробну

Добавлено через 28 минут
Не, тоже бесполезно
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.07.2014, 16:12 #11
Цитата Сообщение от Хедин Посмотреть сообщение
Не, тоже бесполезно
Ну раз уж считываете с файла, то и выводите в файл.

Хотя, довольно странная политика данной системы, надо было, имхо, оставить либо только консольный ввод, либо только файловый.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2014, 16:12
Привет! Вот еще темы с ответами:

Ввести натуральное число N и вывести все натуральные числа, не превосходящие N - C++
Ввести натуральное число N и вывести все натуральные числа, не превосходящие N и делящиеся на каждую из своих цифр. Пример: Введите...

Дано натуральное число n .Вывести все числа от 1 до n .При решени использовать рекурсию - C++
#define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; void recursion(int n) { int sum = 0; int i = 0; // Базовыйслучай if (n...

Найти цифры, из которых состоит заданное натуральное число, и вывести их в возрастающем порядке - C++
Составить программу, определяющую, из каких цифр состоит заданное натуральное число и печатающую эти цифры в возрастающем порядке. ...

Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, …, 10 кг конфет - C++
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, …, 10 кг конфет. А с этим как быть на С++?!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.07.2014, 16:12
Ответ Создать тему
Опции темы

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