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

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

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

Добрый вечер. Не могу понять в чем проблема. Нужно найти моду числа:
C#
1
2
  double res2 = (Math.Pow(x, (n - 1) / 2));
                        Console.WriteLine("res2  = {0}", (res2 % n));
где х=3,n=121. В результате должно выводить 1,а выводит 93. В чем проблема?Спасибо
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2016, 21:41
Ответы с готовыми решениями:

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

Математическое уравнение. Получается неверный результат, не могу понять в чем причина, ошибок не выдает
namespace Work2 { class Program { static void Main(string args) { ...

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

При несложном расчете выдает неверный результат
<html> <script language="javascript"> <!--> var u,y,s,t,result; u= prompt(''); y=...

4
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
17.05.2016, 22:13 2
Вероника99, В double не помещается число 3^60 степени. Оно округляется, и соответственно потом остаток от деления находится не верно.
0
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
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
111 / 82 / 32
Регистрация: 10.08.2014
Сообщений: 420
17.05.2016, 23:20 4
Не скажу точно, но попробуйте decimal:
C#
1
decimal res2 = (decimal)(Math.Pow(x, (n - 1) / 2));
Хотя я не уверен в том, как поведёт себя Math.Pow

...Нету под рукой на ноутбуке подходящего проекта проверить, а студия на нём тормозит (
0
Эксперт .NET
15273 / 11574 / 3035
Регистрация: 17.09.2011
Сообщений: 19,370
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2016, 11:08

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Почему выводит неверный результат при вычислении произведения?
Еще 1 вопрос из разряда нубских: #include<iostream> #include<cmath> using namespace std; int...

Почему изменение параметра шаблона при вызове функции даёт неверный результат?
Есть такой код: #include <opencv2/highgui/highgui.hpp> #include...

Программа выдает неверный результат
Имеем вот такую программу: #include <conio.h> #include <stdio.h> float x={10.0, 20.0, 30.0, 40.0,...

код выдает неверный результат
почему код выдает неверный результат?? в чем причина?? Есть код в котором создаю элемент и...


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

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

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