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

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

Войти
Регистрация
Восстановить пароль
 
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
#1

Единицы - C++

10.11.2011, 22:06. Просмотров 692. Ответов 12
Метки нет (Все метки)

Помогите пожалуйста, кому не сложно сделать задачку, ребят. Заранее огромное спасибо

Найдите двоичное число с наименьшим числом единиц, дающее остаток P при делении на R.

Ввjд
В первой строке входного файла заданы натуральные числа P и R (0<=P<R, 1<=R<=1000).

Вывод
Выведите двоичное число, удовлетворяющее требованию задачи. Если решений несколько, выведите любое из них
Пример:
Ввод
5 7

Вывод
101
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 22:06     Единицы
Посмотрите здесь:

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

Единицы массы - C++
Ребята, помогите пожалуйста перевести программку с паскаля на С++: Единицы массы пронумерованы следующим образом: 1 — килограмм, ...

Степень минус единицы - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; #include &lt;conio.h&gt; using namespace std; double...

факториал с точностью до единицы - C++
Привет всем! Помогите исправить код,считает правильно все факториалы от 0 до 20,у остальных неверно. Посоветовали ввести ограничение на...

Шаблоны и единицы трансляции - C++
Всем привет. Единица трансляции - это *.cpp с включенными в него файлами, я так понимаю Тогда почему не работает такой вариант:...

Распознать нули и единицы - C++
Помогите написать задачку, очень надо)) 00010001110 это условие 00010001010 00010001010 00010001110 и вот, что должно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1473 / 840 / 72
Регистрация: 26.03.2010
Сообщений: 2,875
10.11.2011, 22:19     Единицы #2
ответом не будет P в двоичной?
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
10.11.2011, 22:23  [ТС]     Единицы #3
Цитата Сообщение от neske Посмотреть сообщение
ответом не будет P в двоичной?
Не знаю
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
10.11.2011, 22:59     Единицы #4
Динамика нужна. Вроде бы
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.11.2011, 23:00     Единицы #5
Цитата Сообщение от Montanaa Посмотреть сообщение
Динамика нужна. Вроде бы

Не по теме:

надеюсь, что не для того, чтобы кого-то продинамить

Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
10.11.2011, 23:02     Единицы #6
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

надеюсь, что не для того, чтобы кого-то продинамить

Не по теме:

Автора?))))

Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
13.11.2011, 14:52     Единицы #7
Цитата Сообщение от Montanaa Посмотреть сообщение

Не по теме:

Автора?))))

не получилось решить у вас?
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
19.11.2011, 00:29  [ТС]     Единицы #8
Цитата Сообщение от Montanaa Посмотреть сообщение
не получилось решить у вас?
нет, не знаю как делать(

Добавлено через 6 часов 33 минуты
Ребят, не сможете помочь?
alkagolik
Заблокирован
19.11.2011, 03:26     Единицы #9
будет первое число с минимальным количеством единиц. так что при входных данных 5 7 на выходе получите 12, но это не противоречит условию задачи т.к.
Цитата Сообщение от Shato Посмотреть сообщение
Если решений несколько, выведите любое из них
для архитектурной совместимости переделывайте сами, мне лень.
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
#include <stdio.h>
 
unsigned int bin_one(unsigned int num, unsigned int sum)
{
    unsigned int count = 0, x = num;
    while ( x )
    {
        count += (x & 1);
        if (count == sum)
            break;
        x >>= 1;
    }
    return count;
}
 
int main(void)
{
    unsigned int p, y = 1000000, x, r;
    unsigned int i = 1, sum, tmp, tmp_x;
    sum = y;
    do
    {
        puts("дай остаток");
        scanf("%u", &p);
        puts("дай делитель");
        scanf("%u", &r);
    }
    while ( (r <= p) | (r < 1) | (r > 1000) );
 
    while ( r * i <= y)
    {
        x = r * i + p;
        tmp = bin_one(x, sum);
        if (sum > tmp)
        {
            sum = tmp;
            tmp_x = x;
        }
        if (sum == 1)
            break;
        ++i;
    }
    printf("%u\n", tmp_x);
 
    return 0;
}
Добавлено через 43 минуты
в таком варианте подольше будет, но и диапазон полный пройдет
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
#include <stdio.h>
 
unsigned int bin_one(unsigned long long num, unsigned int sum)
{
    unsigned int count = 0;
    while ( num )
    {
        if (num & 1)
            ++count;
        if (count == sum)
            break;
        num >>= 1;
    }
    return count;
}
 
int main(void)
{
    unsigned int p, y = 0xFFFFFFFF;
    unsigned int i = 1, sum, tmp;
    unsigned long long x = 0, r, tmp_x;
    sum = y;
    do
    {
        puts("дай остаток");
        scanf("%u", &p);
        puts("дай делитель");
        scanf("%llu", &r);
    }
    while ( (r <= p) | (r < 1) | (r > 1000) );
 
    while ( x <= y)
    {
        x = r * i + p;
        ++i;
        tmp = bin_one(x, sum);
 
        if (sum > tmp)
        {
            sum = tmp;
            tmp_x = x;
        }
        if (sum == 1)
            break;
    }
    printf("%llu\n", tmp_x);
 
    return 0;
}
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
19.11.2011, 14:38  [ТС]     Единицы #10
но вывод же нужно в двоичной сделать? т.е. никаких 2 там не будет
alkagolik
Заблокирован
19.11.2011, 15:11     Единицы #11
Shato, кто из нас ТС? почему вы спрашиваете каким должен быть вывод? В первом посте я вижу задание показать число, а вот сс числа не оговаривается. И какая проблема сделать двоичный вывод?
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
19.11.2011, 15:13  [ТС]     Единицы #12
Цитата Сообщение от alkagolik Посмотреть сообщение
Shato И какая проблема сделать двоичный вывод?
C++
1
cout << ((tmp_x >> i) & 1) << endl;
так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 15:33     Единицы
Еще ссылки по теме:

Округление float до единицы - C++
Например есть число с плавающей точкой. Как его превратить в единицу без преобразования типа в int? Желательно без использования условных...

Определяет единицы массы в кг - C++
Определяет единицы массы в кг, г, мг. Ниже приведены неметричес¬кие русские единицы массы: Берковец = 10 пудам = 163805 кг, пуд = 40...

Древнерусские Неметрические единицы длины - C++
4) Древнерусские Неметрические единицы длины: 1 верста = 500 саженей; 1 сажень = 3 аршина; 1 аршин = 16 вершков, 1 вершок = 44,45 мм. Длина...

Нулевые элементы массива заменить на единицы - C++
В одномерном динамическом массиве: 1 шаг. преобразование исходного массива . Нулевые элементы заменить на единицы. 2 шаг. Заполнение...


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

Или воспользуйтесь поиском по форуму:
alkagolik
Заблокирован
19.11.2011, 15:33     Единицы #13
нет, сейчас покажу

Добавлено через 10 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <limits.h>
 
void bin_print(size_t x)
{
    size_t p = 1 << (sizeof (size_t) * CHAR_BIT - 1);
    size_t n = sizeof (size_t) * CHAR_BIT;
    size_t k = n - 1;
 
    while ( n-- )
    {
        printf("%u", ( (x & p) >> k) );
        x <<= 1;
    }
}
int main(void)
{
    size_t x = 123456;
    bin_print(x);
    return 0;
}
Добавлено через 5 минут
так проще, но не знаю как реализовать
C
1
2
3
4
5
6
7
8
9
10
void bin_print(size_t x)
{
    size_t n = sizeof (size_t) * CHAR_BIT;
    while ( n-- )
    {
        printf("%u", (x & 1) );
        //тут надо переместить каретку на 1 позицию влево
        x >>= 1;
    }
}
Yandex
Объявления
19.11.2011, 15:33     Единицы
Ответ Создать тему
Опции темы

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