Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Вероника99
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 461
#1

Почему при поиске остатка числа выдает неверный результат? - C#

17.05.2016, 21:41. Просмотров 158. Ответов 4
Метки нет (Все метки)

Добрый вечер. Не могу понять в чем проблема. Нужно найти моду числа:
C#
1
2
  double res2 = (Math.Pow(x, (n - 1) / 2));
                        Console.WriteLine("res2  = {0}", (res2 % n));
где х=3,n=121. В результате должно выводить 1,а выводит 93. В чем проблема?Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 21:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему при поиске остатка числа выдает неверный результат? (C#):

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

Почему выдает неправильный результат
using System; using System.Collections.Generic; using System.Linq; using...

Почему программа выдает одинаковые значения при обычном запуске и разные при пошаговом выполнении?
почему когда компилирую программу, в двух массивах значения всегда...

Не считываются вещественные числа при поиске суммы всех имеющихся в тексте чисел
Не могу найти ошибку, не считываются вещественные числа Найти сумму всех...

Почему данный код выдает ошибку при компиляции?
Чтобы не создавать кучу тем с вопросами по мере обучения, буду задавать их...

ChildWindowFromPoint даёт неверный результат
Есть WinForms приложение. В основном окне вызывается дочернее вот таким...

4
ORLENOK
86 / 86 / 35
Регистрация: 05.08.2011
Сообщений: 390
Завершенные тесты: 5
17.05.2016, 22:13 #2
Вероника99, В double не помещается число 3^60 степени. Оно округляется, и соответственно потом остаток от деления находится не верно.
0
Вероника99
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 461
17.05.2016, 23:17  [ТС] #3
Точно,я об этом не подумала,а что Вы бы посоветовали сделать в этой ситуации?Мне нужно найти остаток от деления этого выражения:
C#
1
(Math.Pow(x, (n - 1) / 2));
Добавлено через 41 минуту
Подключила BigInteger,тоже самое,я в отчаянии
C#
1
2
3
 BigInteger a = (BigInteger)(Math.Pow(x, (n - 1) / 2));
                        BigInteger b = a % n; 
                        Console.WriteLine("Number  = {0}", b );
0
baliar
108 / 79 / 32
Регистрация: 10.08.2014
Сообщений: 420
Завершенные тесты: 1
17.05.2016, 23:20 #4
Не скажу точно, но попробуйте decimal:
C#
1
decimal res2 = (decimal)(Math.Pow(x, (n - 1) / 2));
Хотя я не уверен в том, как поведёт себя Math.Pow

...Нету под рукой на ноутбуке подходящего проекта проверить, а студия на нём тормозит (
0
kolorotur
Эксперт .NET
9937 / 8323 / 2044
Регистрация: 17.09.2011
Сообщений: 14,325
18.05.2016, 11:08 #5
Цитата Сообщение от Вероника99 Посмотреть сообщение
C#
1
double res2 = (Math.Pow(x, (n - 1) / 2));
Почитайте про модульную экспоненту и не прогуливайте математику

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Modulo(int x, int n)
{
    int result = 1;
    int e = (n - 1) / 2;
 
    while (e > 0)
    {
        if (e % 2 == 1)
            result = (result * x) % n;
        e /= 2;
        x = (x * x) % n;
    }
    return result;
}
Если х2 может быть больше int.MaxValue, то в методе перед вычислениями его можно преобразовать в long.
0
18.05.2016, 11:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 11:08
Привет! Вот еще темы с решениями:

Неверный результат с парсинге JSON
Вот сам JSON который возвращает сайт! Рассмотрю на 1 строке... Нужно вытащить...

Неверный результат работы программы
Дано первоначальное число. Изменяем его путем прибавления других чисел и...

Вычисление логарифма - неверный результат
Люди добрые, подскажите как в C# представить следующую формулу: x = -log2b ...

Сравнение строк даёт неверный результат
Ткните, пожалуйста, что я делаю не так? Только начал изучать ООП. Как бы я...


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

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

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