Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » NWN 16:33
 » Liu CAs 16:32
 » elliot_pl 16:31
 » Sherif 16:28
 » NimnuL 16:26
 » J@rek 16:25
 » wrrr 16:23
 » siwydym 16:22
 » Artaa 16:21
 » Syzyf 16:15
 » zibi13 16:14
 » mravel 16:13
 » Doczu 16:08
 » jablo 16:05
 » Miron 16:04
 » KHot 16:00
 » ReMoS 15:56
 » ulan 15:55
 » Dexter 15:55
 » yeger 15:53

 Dzisiaj przeczytano
 36890 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

[Matematyka] Potęgowanie jedenastki. , Chrisu 16/02/12 09:59
Macie jakiś pomysł jak policzyć ilość jedynek w potędze liczby 11?

/// GG# 1 110 10 10 11 100 10 \\\

  1. mhm , gorky 16/02/12 13:44
    #!/usr/bin/python

    liczba=11**6
    print(liczba.__str__().count('1'))

    1. aha , gorky 16/02/12 13:45
      zamiast 6 wstaw sobie jaką tam potęgę chcesz

  2. jakby to było tak proste ;) , Chrisu 16/02/12 14:21
    chodzi o 11^n gdzie n może być do 2^32 ;)

    /// GG# 1 110 10 10 11 100 10 \\\

    1. to dodajesz , Wedrowiec 16/02/12 14:45
      for (i=1;i<=(2^32);i++)
      ;)

      "Widziałem podręczniki
      Gdzie jest czarno na białym
      Że jesteście po**bani"

      1. jaja sobie robisz? , Chrisu 16/02/12 14:49
        co Ci jest w stanie podnieść 11 do takiej potęgi ;)

        /// GG# 1 110 10 10 11 100 10 \\\

        1. Mathematica , gorky 16/02/12 14:59
          na pewno potrafi

          no ale rozumiem już że chodzi o trik analityczny, a z tymi skończyłem już dawno temu ;)

          1. mathematica wszystko potrafi ;) , Chrisu 16/02/12 20:48
            to chodzi o to by w pascalu/c++ oprogramować.

            A zależność jest taka, że dana cyfra, to jest suma cyfry na tej samej pozycji i pozycji poprzedniej potęgi wcześniejszej.
            Myślałem, by wrzucić to do tablicy i dodawać "pisemnie". Tylko jeszcze zoptymalizować to - bo nadal nie widzę tego dla 11^(2^32) ;)

            1___________11
            2__________121
            3_________1331
            4________14641
            5_______161051
            6______1771561
            7_____19487171
            8____214358881
            9___2357947691
            10_25937424601

            /// GG# 1 110 10 10 11 100 10 \\\

        2. pewnie jakiś , Wedrowiec 16/02/12 15:27
          piękny umysł ;)

          "Widziałem podręczniki
          Gdzie jest czarno na białym
          Że jesteście po**bani"

  3. Hehe , ligand17 16/02/12 15:48
    jakieś 12 lat temu to przerabiałem. U mnie chodziło o sumowanie cyfr, ale w 11 jest prawidłowość, policz sobie parę pierwszych wyrazów ciągu 11^n na piechotę i załapiesz.

    1. no prawidłowość jest na pewno... , gorky 16/02/12 16:09
      http://img442.imageshack.us/...42/1825/imagete.png
      (pierwszych tysiąc potęg)

  4. może , Visar 17/02/12 08:42
    można wykorzystać fakt, że kolejne cyfry wchodzące w skład liczby będącej potęgą 11 mozna uzyskać z trójkąta Pascala. Każdy wiersz trójkąta odpowiada za kolejną potęgę 11. Idąc od prawej do lewej wypisujemy kolejne cyfry liczby i sprawdzamy czy jest to 1. Oczywiście jeśli w trójkącie jest liczba większa od 10 to cyfra jest równa liczba modulo 10, a liczba / 10 dodajemy do liczby po lewej.
    Problemem jest to, że wyliczanie współczynników szybko przekroczy długość wbudowanych typów. Dlatego może warto skorzystać z arytmetyki na liczbach zapisywanych w stringach, np. korzystajac z biblioteki BigIntegerLibrary.

    przykładowy kod:
    (dla testów bez dodatkowych bibliotek można użyć typu unsigned long long zamiast BigUnsigned, ale wtedy prawidłowo liczy tylko do potegi 62)

    #include "BigInt\BigIntegerLibrary.h"

    int main()
    {
    BigUnsigned suma, element = 1, przeniesienie = 0;
    unsigned int n, potega11, iloscCyfr1 = 0;

    std::cout << "Program zlicza ilosc cyfr 1 w podanej potedze liczby 11" << std::endl;
    std::cout << "Wprowadz potege liczby 11: ";
    std::cin >> potega11;

    for(n = 0; n <= potega11; n++)
    {
    suma = element + przeniesienie;

    if (suma % 10 == 1)
    iloscCyfr1++;

    przeniesienie = suma / 10;

    element = element * (potega11 - n) / (n + 1);
    }

    std::cout << "Cyfra 1 wystepuje " << iloscCyfr1 << " razy." << std::endl;
    return 0;
    }

    Visar

    1. dzięki... , Chrisu 17/02/12 09:49
      123

      /// GG# 1 110 10 10 11 100 10 \\\

  5. Błąd , alchemik 28/02/12 19:06
    Kolega pewnie robi zadanie 3 z tegorocznego "Algotmionu" :D Nie chciałbym Cię straszyć, ale wygląda na to, że zamieszczony tu program jest, kolokwialnie mówiąc, felerny. Dowód? Prosty. Wpisz w kompa, żeby policzył 11^100, a występuje tam 12 cyfr 1, a tutejszy program zwraca wartość 11. Dalej różnice są o wieeeele większe. Życzę powodzenia ;p

    1. Fakt , Visar 29/02/12 00:31
      W trakcie działania na coraz większych liczbach, po zakończeniu może pozostać przeniesienie które już nie jest uwzględnianie. Trzeba tylko po zakończeniu pętli rozbić jeszcze przeniesienie.

      #include "BigInt\BigIntegerLibrary.h"

      int main()
      {
      BigUnsigned suma, element = 1, przeniesienie = 0;
      unsigned int n, potega11, iloscCyfr1 = 0;

      std::cout << "Program zlicza ilosc cyfr 1 w podanej potedze liczby 11" << std::endl;
      std::cout << "Wprowadz potege liczby 11: ";
      std::cin >> potega11;

      for(n = 0; n <= potega11; n++)
      {
      suma = element + przeniesienie;

      if (suma % 10 == 1)
      iloscCyfr1++;

      przeniesienie = suma / 10;

      element = element * (potega11 - n) / (n + 1);
      }

      while (przeniesienie > 0)
      {
      if (przeniesienie % 10 == 1)
      iloscCyfr1++;
      przeniesienie /= 10;
      }

      std::cout << "Cyfra 1 wystepuje " << iloscCyfr1 << " razy." << std::endl;
      return 0;
      }

      Visar

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL