Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
 Аватар для Keworker
3 / 4 / 0
Регистрация: 29.05.2021
Сообщений: 64

Считывание числа размером 10 в 50 степени

29.06.2021, 10:25. Показов 5785. Ответов 31

Здравствуйте. Мне необходимо считать число, размеры которого доходят до 10 в 50 степени. При вводе чисел, близких к максимальной границе программа ведет себя очень странно - например на вход я ввожу число 7000000000000000000000000000000000000000 0000000003 , а в программе оно считывается как просто 7.0 . Использовал тип данных long double, так как насколько я знаю лишь он может хранить числа такого размера
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2021, 10:25
Ответы с готовыми решениями:

Показать, что любой набор размером 201 из чисел с 1 по 299 будет иметь 2 числа частное которых равно степени 3
Есть такая задачка Показать, что любой набор размером 201 из чисел с 1 по 299 будет иметь 2 числа, частное которых равно степени 3. ...

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Вычисление степени числа и запись цифр степени числа в массив
помогите пожалуйста) написать программу для вычисления степени числа и записью цифр степени этого числа в массив. само число и степень...

31
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.06.2021, 12:30
Лучший ответ Сообщение было отмечено Keworker как решение

Решение

Цитата Сообщение от Keworker Посмотреть сообщение
Можете пожалуйста рассказать как получить остаток от деления числа используя строку?
Вот, набросал на коленке во время перекура.
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
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cassert>
 
#define DIG(symbol) ((symbol) - 0x30)
 
bool isnumber(char* sn)
{
  do if (!isdigit(*sn++)) return false;
  while (*sn);
  return true;
}
 
// вычисление остатка от деления на 7
// целого беззнакового числа любой длины
unsigned mod7(char* sn)
{
  assert(isnumber(sn)); // на всякий случай
  unsigned rem = DIG(*sn++);
  while (*sn) rem = (3 * rem + DIG(*sn++)) % 7;
  return rem;
}
 
int main()
{
  char snumb[] = "200545053989042"; // подставь сюда любую строку из цифр
  printf("# %s %% 7 = %u\n", snumb, mod7(snumb));
  getchar();
  return 0;
}
Добавлено через 7 минут
Рекурсию сам допилишь или чуваки помогут.


Добавлено через 16 минут
Ладно, я сёдня добрый и мне скучно на работе.
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 <cstdio>
#include <cstdlib>
#include <cctype>
#include <cassert>
 
#define DIG(symbol) ((symbol) - 0x30)
 
// РЕКУРСИВНОЕ вычисление остатка от деления на 7
// целого беззнакового числа любой длины
unsigned mod7r(char* sn, unsigned rem)
{
  if (!*sn) return rem;
  assert(isdigit(*sn)); // на всякий случай
  return mod7r(++sn, 3 * rem + DIG(*sn)) % 7;
}
 
int main()
{
  char snumb[] = "200545053989042"; // подставь сюда любую строку из цифр
  printf("# %s %% 7 = %u\n", snumb, mod7r(snumb, 0));
  getchar();
  return 0;
}
З.Ы. Ненавижу рекурсию в тех местах, где без неё можно обойтись. Дебильное задание.
2
Модератор
 Аватар для long399
2885 / 1847 / 933
Регистрация: 16.10.2013
Сообщений: 5,252
Записей в блоге: 15
29.06.2021, 13:08
_Ivana, Verevkin,
 Комментарий модератора 

Прекращаем оффтоп. Дальше будут карты.

Тема почищена.
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
29.06.2021, 13:50
Лучший ответ Сообщение было отмечено Verevkin как решение

Решение

Цитата Сообщение от Verevkin Посмотреть сообщение
C++
1
char snumb[] = "200545053989042"; // подставь сюда любую строку из цифр
Увы, не любую.
Code
1
# 77777777777777777777 % 7 = 6
Длина строки по-прежнему ограничена, просто переполнение происходит теперь при вычислении второго аргумента функции.

Добавлено через 5 минут
Но исправить вроде несложно. Достаточно деление по модулю внести в вычисление аргумента.
C++
1
2
3
4
5
6
unsigned mod7r(char* sn, unsigned rem)
{
  if (!*sn) return rem;
  assert(isdigit(*sn)); // на всякий случай
  return mod7r(++sn, (3 * rem + DIG(*sn)) % 7);
}
2
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.06.2021, 13:55
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но исправить вроде несложно.
Да, я тоже так подумал.
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 <cstdio>
#include <cstdlib>
#include <cctype>
#include <cassert>
 
#define DIG(symbol) ((symbol) - 0x30)
 
// РЕКУРСИВНОЕ вычисление остатка от деления на 7
// целого беззнакового числа любой длины
unsigned mod7r(char* sn, unsigned rem)
{
  if (!*sn) return rem;
  assert(isdigit(*sn)); // на всякий случай
  return mod7r(++sn, 3 * rem + DIG(*sn) % 7);
}
 
int main()
{
  char snumb[] = "777777777777777777777777777777777777"; // подставь сюда любую строку из цифр
  printf("# %s %% 7 = %u\n", snumb, mod7r(snumb, 0));
  //getchar();
  return 0;
}


Нерекурсивный вариант был изначально рабочим.
Не дружу с рекурсией.
1
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
29.06.2021, 14:01
Ну нет, так не пойдёт
Code
1
# 6000000000000006 % 7 = 86093448
Делить надо сумму, а не последнее слагаемое. У меня скобки.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.06.2021, 14:04
Лучший ответ Сообщение было отмечено grizlik78 как решение

Решение

Цитата Сообщение от grizlik78 Посмотреть сообщение
Делить надо сумму, а не последнее слагаемое. У меня скобки.
да, согласен.
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 <cstdio>
#include <cstdlib>
#include <cctype>
#include <cassert>
 
#define DIG(symbol) ((symbol) - 0x30)
 
// РЕКУРСИВНОЕ вычисление остатка от деления на 7
// целого беззнакового числа любой длины
unsigned mod7r(char* sn, unsigned rem)
{
  if (!*sn) return rem;
  assert(isdigit(*sn)); // на всякий случай
  return mod7r(++sn, (3 * rem + DIG(*sn)) % 7);
}
 
int main()
{
  char snumb[] = "6000000000000006"; // подставь сюда любую строку из цифр
  printf("# %s %% 7 = %u\n", snumb, mod7r(snumb, 0));
  //getchar();
  return 0;
}
Интересно, как ТС будет преподу объяснять, как вся эта вундервафля работает.
Я бы посмотрел.
1
 Аватар для Keworker
3 / 4 / 0
Регистрация: 29.05.2021
Сообщений: 64
29.06.2021, 14:18  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Интересно, как ТС будет преподу объяснять, как вся эта вундервафля работает.
Я бы посмотрел.
Мне тоже интересно, постараюсь разобраться) Спасибо большое что потратили время, надеюсь не сильно вас затруднило)
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.06.2021, 14:21
Цитата Сообщение от Keworker Посмотреть сообщение
Мне тоже интересно, постараюсь разобраться)
Снимай на видео и выкладывай на ютуб. Поглядим.
Цитата Сообщение от Keworker Посмотреть сообщение
Спасибо большое что потратили время, надеюсь не сильно вас затруднило)
Интересные задачи тут попадаются всё реже и реже. Мы их тут решаем для удовольствия, а то, что это кому-то помогает - побочный эффект.

Давай ещо.
0
 Аватар для Keworker
3 / 4 / 0
Регистрация: 29.05.2021
Сообщений: 64
29.06.2021, 14:36  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Давай ещо.
Ну пока что я могу предложить только тэгнуть вас в следуйщий раз когда буду о чем то спрашивать, если хотите, а те задачи с которыми я сам справляюсь вряд ли вам будут интересны)
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.06.2021, 14:41
Цитата Сообщение от Keworker Посмотреть сообщение
тэгнуть вас в следуйщий раз
Звучить, как угроза.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,309
30.06.2021, 15:39
Цитата Сообщение от Keworker Посмотреть сообщение
нужна будет лишь информация об его остатке от деления на семь
12345
12%7 = 53%7 = 44%7 = 25%7 = 4

в цикле пробегаешь по своей длинной строке, по моему алиментарно...

Добавлено через 1 минуту
Цитата Сообщение от Verevkin Посмотреть сообщение
Звучить, как угроза.
Тэгнуть - это больнее, чем лягнуть!
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,309
01.07.2021, 09:04
C++ (Qt)
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
void Widget::press_pbtn_01()
{
    QString str_in = ui->lineEdit->text();
 
    QString str;
    bool flg;
    int x0 = 0;
 
    for(int i = 0; i < str_in.length(); i++)
    {
        str = str_in.at(i);
 
        x0 *= 10;
        x0 += str.toInt(&flg, 10);
 
        if(!flg)
        {
            ui->label_02->setText("error");
            return;
        }
 
        x0 = x0 % 7;
    }
 
    ui->label_02->setNum(x0);
}
Миниатюры
Считывание числа размером 10 в 50 степени  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.07.2021, 09:04

Вывести на экран степени числа 2 от 2 до 16 степени включительно (без использования массивов)
Напишите программу, выводящую на экран степени числа 2 от 2 до 16 степени включительно.

Определить последнюю цифру числа в степени, которая тоже в степени
Проще говоря, суть задания заключается в том, чтобы найти последнюю цифру (последние цифры, если возможно) числа n^(n^n) или же nnn ...

Описать функцию, вычисляющую 2,3,4 степени числа A и возвращающую эти степени соответственно в переменных B,C,D
Описать функцию, вычисляющую 2,3,4 степени числа A и возвращающую эти степени соответственно в переменных B,C,D. С помощью этой функции...

Описать функцию, вычисляющую 2,3,4 степени числа A и возвращающую эти степени соответственно в переменных B,C,D
Описать функцию, вычисляющую 2,3,4 степени числа A и возвращающую эти степени соответственно в переменных B,C,D. C помощью этой функции...

Нахождение степени X квадратной матрицы размером nxm
Реализовать алгоритм нахождения степени X квадратной матрицы размером nxm. Значение X, n и m определяются пользователем. На языке Си


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru