• 0
  • cytuj |

  • 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 :P
    d41d8cd98f00b204e9800998ecf8427e
  • romson89  
    absolwent
    Wydział: W-8 IZ
    Rok studiów: 5

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • 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 :P


    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
  • 0
  • cytuj |

  • 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 :P
    d41d8cd98f00b204e9800998ecf8427e
  • 0
  • cytuj |

  • 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
  • hardon  
    Phoenix!
    Wydział: W-8 IZ
    Rok studiów: 2

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • 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
  • akul  
    unus multorum
    Wydział: W-8 IZ
    Rok studiów: 1

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • 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