Strona 1 z 1

[C] Dwa do dużej potęgi

: 6 lut 2016, o 15:35
autor: fenem
Witam mam problem z napisaniem programu który policzy dokładną wartość \(\displaystyle{ 2^{111}}\) program muszę napisać w C. Ten program mi to liczy do potęgi \(\displaystyle{ 63}\).

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{
 int n=111;
  unsigned long long potega = 2;
 
  
 
  for(int i=1;i<n;i++, potega<<=1)
    cout<<"2 do potegi "<<i<<" wynosi "<<potega<<endl;
 
  system("PAUSE");
  return 0;
}

[C] Dwa do dużej potęgi

: 6 lut 2016, o 18:03
autor: Zordon
zmienna long long ma \(\displaystyle{ 64}\) bity, co oznacza, że największa liczba jaką pomieści to \(\displaystyle{ 2^{64}-1}\), musisz zaimplementować własną arytmetykę, jeśli chcesz operować na większych liczbach

[C] Dwa do dużej potęgi

: 6 lut 2016, o 18:45
autor: BKDev
Możesz też poczytać o szybkim potęgowaniu modulo. Przy tak dużych liczbach na pewno się przyda.

[C] Dwa do dużej potęgi

: 7 lut 2016, o 12:58
autor: Zordon
Nie przyda się.

[C] Dwa do dużej potęgi

: 7 lut 2016, o 13:18
autor: Kartezjusz
A czy da się oszukać stringiem system?

[C] Dwa do dużej potęgi

: 7 lut 2016, o 13:34
autor: a4karo
To nie oszustwo, tylko "poszerzenie możliwość"

Tak, czy owak musisz "nauczyc" komputer jak mnożyć takie łańcuchy. Równie dobrze możesz zrobic implementacje na dwóch long longach (chyba łatwiej niż na łancuchach)

[C] Dwa do dużej potęgi

: 7 lut 2016, o 22:23
autor: miki999
A skoro o poszerzaniu możliwości mowa, to można też sprawdzić, czy używany kompilator nie posiada rozszerzenia pozwalającego na używanie 128 bitowych zmiennych (jak np. gcc). Wtedy pozostaje jedynie napisanie funkcji printującej.

[C] Dwa do dużej potęgi

: 9 lut 2016, o 19:15
autor: Fibik
Użyj double zamiast int, a wtedy bez problemu możesz obliczać tam... te potęgi dwójki, aż do \(\displaystyle{ 2^{4096}}\), bo taki jest tam limit.

[C] Dwa do dużej potęgi

: 9 lut 2016, o 19:23
autor: a4karo
Fibik pisze:Użyj double zamiast int, a wtedy bez problemu możesz obliczać tam... te potęgi dwójki, aż do \(\displaystyle{ 2^{4096}}\), bo taki jest tam limit.
A jak wypiszesz WSZYSTKIE cyfry takiego dubla?