-
-
-
Czy ktoś umie zrobić program w Javie lub C# o takiej treści:
Zaimplementować algorytm szybkiego potęgowania, wykorzystujący
reprezentację binarną wykładnika potęgi.
Jaka jest złożoność obliczeniowa każdego z algorytmów?
Potrzebuję tego na jutro do 19ej, a nie bardzo wiem jak to zrobić Z Javy mało jeszcze umiem, bo w pierwszym semestrze miałem C++ ( ogólnie jestem cały semestr Javy w plecy)
Proszę pomóżcie
d41d8cd98f00b204e9800998ecf8427e
-
-
-
shark_221 napisał/a: | Czy ktoś umie zrobić program w Javie lub C# o takiej treści:
Zaimplementować algorytm szybkiego potęgowania, wykorzystujący
reprezentację binarną wykładnika potęgi.
Jaka jest złożoność obliczeniowa każdego z algorytmów?
Potrzebuję tego na jutro do 19ej, a nie bardzo wiem jak to zrobić Z Javy mało jeszcze umiem, bo w pierwszym semestrze miałem C++ ( ogólnie jestem cały semestr Javy w plecy)
Proszę pomóżcie |
Powiem szczerze, że problem mnie zaciekawił. Algorytm szybkiego potęgowania dla wykładnika w postaci dziesiętnej jest łatwy do zaimplementowania. Ale postać dwójkowa, hmmm... Posiedzę chwilę nad tym, ale efektów nie obiecuję =]
d41d8cd98f00b204e9800998ecf8427e
-
-
-
_________________ ...kobiety to zło
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Jeśli chodzi o to potęgowanie binarne to w C++ mi sięto udało jako tako, porównując z tym Algorytmem z linku (z wcześniejszego posta) jest podobnie. Ale ziomek od laborek nie pozwala nam tego pisać w c++ - Jedyne możliwe języki to C# lub Java
akbym miał to zrobić w C++ to by nie było tu mojego tematu
d41d8cd98f00b204e9800998ecf8427e
-
-
-
to napisz w c++ a ja Ci to przerobie na jave
d41d8cd98f00b204e9800998ecf8427e
-
-
-
akul,
To jak umiesz to przerobić na jave to kod tego programu jest następujący :
#include <cstdlib>
#include <iostream>
using namespace std;
// Potęgowanie binarne C++
int main(int argc, char *argv[])
{
int p, w, wynik=1;
cout<<"Podaj podstawnik potegi: ";
cin>>p;
cout<<"Podaj wykladnik potegi: ";
cin>>w;
while(w!=0)
{
if(w%2==1) wynik*=p; // operacja Modulo (2)
w=w/2; //Informacja na temat potęgowania binarnego
p*=p;
}
cout<<"Wynik potegowania to: "<<wynik<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
d41d8cd98f00b204e9800998ecf8427e
-
-
-
Kod w Javie z wykorzystaniem rekurencji (oblicza wartość wyrażenia x^n):
Cytat: | public class Potegowanie{
public static float speedPower(int x, int n){
float a;
if (n == 0)
return 1;
else
if (n % 2 == 1)
return x * speedPower(x, n-1);
else{
a = speedPower(x, n / 2);
return a*a;
}
} |
d41d8cd98f00b204e9800998ecf8427e
-
-
-
import java.io.StreamTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Potega {
public static void main(String[] args) throws IOException {
int p, w, wynik=1;
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
System.out.print("Podaj podstawe potegi: ");
st.nextToken();
p = (int)st.nval;
System.out.println("Podaj wykladnik potegi: ");
st.nextToken();
w = (int)st.nval;
while(w!=0)
{
if(w%2==1) wynik*=p; // operacja Modulo (2)
w=w/2; //Informacja na temat potęgowania binarnego
p*=p;
}
System.out.println("Wynik potegowania to: "+wynik);
}
}
d41d8cd98f00b204e9800998ecf8427e
Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014 Strona wygenerowana w 15,3ms. Zapytań do SQL: 17
|