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

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

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

Единицы - C++

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

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

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

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

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

Вывод
101
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Единицы (C++):

Дано натуральное число n. Отбросить в нем все цифры, стоящие правее самой правой единицы либо оставить число без изменений, если единицы в нем нет - C++
Дано натуральное число n. Отбросить в нем все цифры, стоящие правее самой правой единицы либо оставить число без изменений, если единицы в...

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

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

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

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

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

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

Не по теме:

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

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

Не по теме:

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

Не по теме:

Автора?))))

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

Не по теме:

Автора?))))

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

Добавлено через 6 часов 33 минуты
Ребят, не сможете помочь?
0
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;
}
0
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
19.11.2011, 14:38  [ТС] #10
но вывод же нужно в двоичной сделать? т.е. никаких 2 там не будет
0
alkagolik
Заблокирован
19.11.2011, 15:11 #11
Shato, кто из нас ТС? почему вы спрашиваете каким должен быть вывод? В первом посте я вижу задание показать число, а вот сс числа не оговаривается. И какая проблема сделать двоичный вывод?
0
Shato
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 82
19.11.2011, 15:13  [ТС] #12
Цитата Сообщение от alkagolik Посмотреть сообщение
Shato И какая проблема сделать двоичный вывод?
C++
1
cout << ((tmp_x >> i) & 1) << endl;
так?
0
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;
    }
}
1
19.11.2011, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 15:33
Привет! Вот еще темы с ответами:

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

Степень минус единицы - 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++
Всем привет. Единица трансляции - это *.cpp с включенными в него файлами, я так понимаю Тогда почему не работает такой вариант:...

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


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

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

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