[C] Dwa do dużej potęgi

fenem
Użytkownik
Użytkownik
Posty: 16
Rejestracja: 28 paź 2013, o 19:46
Płeć: Mężczyzna
Lokalizacja: kraków
Podziękował: 3 razy

[C] Dwa do dużej potęgi

Post 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;
}
Ostatnio zmieniony 6 lut 2016, o 16:47 przez Afish, łącznie zmieniany 1 raz.
Powód: Nieczytelny zapis - brak LaTeX-a. Proszę zapoznaj się z instrukcją: http://matematyka.pl/latex.htm . Całe wyrażenia matematyczne umieszczaj w tagach [latex] [/latex].
Awatar użytkownika
Zordon
Użytkownik
Użytkownik
Posty: 4977
Rejestracja: 12 lut 2008, o 21:42
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 75 razy
Pomógł: 910 razy

[C] Dwa do dużej potęgi

Post 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
BKDev
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 10 sie 2015, o 14:37
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[C] Dwa do dużej potęgi

Post autor: BKDev »

Możesz też poczytać o szybkim potęgowaniu modulo. Przy tak dużych liczbach na pewno się przyda.
Awatar użytkownika
Zordon
Użytkownik
Użytkownik
Posty: 4977
Rejestracja: 12 lut 2008, o 21:42
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 75 razy
Pomógł: 910 razy

[C] Dwa do dużej potęgi

Post autor: Zordon »

Nie przyda się.
Kartezjusz
Użytkownik
Użytkownik
Posty: 7330
Rejestracja: 14 lut 2008, o 08:31
Płeć: Mężczyzna
Lokalizacja: Z Bielskia-Białej
Podziękował: 6 razy
Pomógł: 961 razy

[C] Dwa do dużej potęgi

Post autor: Kartezjusz »

A czy da się oszukać stringiem system?
a4karo
Użytkownik
Użytkownik
Posty: 22206
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3754 razy

[C] Dwa do dużej potęgi

Post 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)
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C] Dwa do dużej potęgi

Post 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.
Fibik
Użytkownik
Użytkownik
Posty: 971
Rejestracja: 27 wrz 2005, o 22:56
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 11 razy
Pomógł: 75 razy

[C] Dwa do dużej potęgi

Post 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.
a4karo
Użytkownik
Użytkownik
Posty: 22206
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3754 razy

[C] Dwa do dużej potęgi

Post 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?
ODPOWIEDZ