Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 9. Sonntagsrätsel

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.10.2002, 10:19 Uhr
virtual
Sexiest Bit alive
(Operator)



Code:
7 -> 1 -> 3 -> 9 -> 7 ...
br>Eine X-Y-Z Folge sei definiert wie folgt:
1. W(1) ist eine beliebige natürliche Zahl X (Startwert) != 0
2. W(n) ist die zahl bestehenden aus dem letzten Y Ziffern des Z-Fachen von W(n-1).
Die 20-2-2 Folge schaut also so aus|CODE||
Die 7-1-3 Folge ist dann
Code:
20 -> 40 -> 80 -> 60 -> 20 ...

Es ist ziemlich wahrscheinlich, daß jede X-Y-Z Folge irgendwie periodisch wird, wenngleich ich Euch den Beweis dafür schuldig bleiben werde.

Nun die Aufgaben:
1. Suche das X, dessen X-2-2 Folge die minimale Periode hat
2. Suche das X, dessen X-2-2 Folge die maximale Periode hat
3. Für welche X kommt in der X-3-2 Folge die Zahl 123 vor?
4. Sind Folgen mit grossem Z tendenziell länger, kürzer, oder gleich periodisch wie die mit kleinem Z?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.10.2002, 11:23 Uhr
Bruder Leif
dances with systems
(Operator)


Hmmmmmm... nur mal ne theoretische Betrachtung von Teil 2: Das Maximum zu finden, dürfte nicht möglich sein, weil dazu alle Folgen durchgespielt werden müssen, und es unendlich viele natürliche Zahlen gibt... so was ähnliches hatte ich vor ein paar Tagen in der THI-Klausur... jetzt sagt mir nicht, ich bin durchgefallen ;-)
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.10.2002, 11:57 Uhr
void*
Generic Pointer
(Operator)


Hallo!


Zitat:

1. W(1) ist eine beliebige natürliche Zahl X (Startwert) != 0


Seit wann ist 0 eine natürliche Zahl ???

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.10.2002, 12:47 Uhr
void*
Generic Pointer
(Operator)


Hallo!

"irgendwie periodisch" heisst wohl, dass die Wiederholung nicht beim 1. Element beginnen muss, sondern irgendwo, siehe 14-2-2 Folge!?

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.10.2002, 12:54 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Und was ist dann die Periodenlänge? Der Länge der ganzen Sequenz bis zu ersten Wiederholung oder die Entfernung vom letzten Element bis zum 1. Auftreten des gleichen Wertes?

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.10.2002, 13:19 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Noch mal ich:


Zitat:

Es ist ziemlich wahrscheinlich, daß jede X-Y-Z Folge irgendwie periodisch wird, wenngleich ich Euch den Beweis dafür schuldig bleiben werde.



Natürlich wird das periodisch, da es nur endlich viele Y-stellige Zahlen gibt.

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.10.2002, 13:21 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Und hier schon mal mein Programm zum Erzeugen der Zahlenfolgen:


C++:
#include <vector>
#include <math.h>
#include <memory>

#include <conio.h>

bool EndConditionReached(unsigned int current, const std::vector<unsigned int> &series,
  std::vector<unsigned int>::size_type &pos)
{  
  std::vector<unsigned int>::size_type end=series.size();
  for(pos=0; pos!=end; ++pos)
  {
    if(series[pos]==current)
       return(true);
  }
  return(false);
}

unsigned int CalculateNextValue(unsigned int current, unsigned int y, unsigned int z)
{
  // multiply it by z
  current*=z;
  size_t length=log10(current)+1;

  if(length>y)
  {
    // put current in a string
    char *help=new char[length+1]; // one space for the '\0'

    // yikes, little VC++ work-around
    if(!help)
      throw(std::bad_alloc());
    sprintf(help, "%u", current);

    // set all positions but the last y ones to 0
    unsigned int max=length-y;
    for(unsigned int i=0; i<max; ++i)
      help[i]='0';

    // transform it back to an unsigned int
    sscanf(help, "%u", &current);

    delete [] help;
  }
  
  return(current);
}

unsigned int CalculateXYZSeries(unsigned int x, unsigned int y, unsigned int z,
  std::vector<unsigned int> &series)
{
  series.clear();
  unsigned int current=x;
  series.push_back(current);

  for(;;)
  {
    current=CalculateNextValue(current, y, z);
    std::vector<unsigned int>::size_type repeatPosition=0;
    if(!EndConditionReached(current, series, repeatPosition))
      series.push_back(current);
    else
      return(series.size()-repeatPosition);
  }
}

void SeriesOutput(const std::vector<unsigned> &series)
{
  std::vector<unsigned int>::const_iterator current=series.begin(), end=series.end();
  for(; current!=end; ++current)
  {
    printf("%u\n", *current);
  }
}

int main(void)
{
  unsigned int x, y, z;
  scanf("%u %u %u", &x, &y, &z);
  std::vector<unsigned int> series;
  unsigned int period;
  period=CalculateXYZSeries(x, y, z, series);
  SeriesOutput(series);
  printf("Period: %u\n", period);
  getch();
  return(0);
}



Gruß
void*
--
Gruß
void*

Dieser Post wurde am 13.10.2002 um 13:22 Uhr von void* editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.10.2002, 14:37 Uhr
virtual
Sexiest Bit alive
(Operator)


@Leif:
Meiner Meinung hac verhalten sich die Startwerte X und N+10^Y*X identisch , so dass es grzbdsätzlich ausreichen dürfte, die Zahlen 1.. 10^Y zubetrachten.

@void
Es gibt immer mal weider menschen, die 0 für eine nat. Zahl halten. daher die Klarstellung.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.10.2002, 15:49 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Nach der Def. die Länge der Folge bis die erste Zahl sich wiederholt:
min=2 für x=50
max=22 für x=1

Nach der Def. Abstand des tatsächlich periodischen Teils:
min=1 für x=25
max=20 für x=1

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.10.2002, 16:15 Uhr
void*
Generic Pointer
(Operator)


zu 3.) nur für x=123

4.) Tendenziell kann ich gar keine Tendenz erkennen...
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: