C++ :: Aufgabe #309

1 Lösung Lösung öffentlich

Periodenlänge von Stammbrüchen

Fortgeschrittener - C++ von JKooP - 01.11.2020 um 09:50 Uhr
Stammbruch nennt man einen Bruch mit einer 1 im Zähler und einer beliebigen natürlichen Zahl im Nenner.
Schreibe eine Methode/Funktion, mit der man die Periodenlänge eines solchen Bruchs berechnen kann.

Beispiele:

1/4 = 0,25 --> Periodenlänge ist 0, da der Bruch abbricht
1/6 = 0,166666… = 0,16 --> Periodenlänge ist 1, da sich nur die Ziffer 6 wiederholt
1/11 = 0,090909… = 0.09 --> Periodenlänge ist 2, da sich die Ziffern 0 und 9 wiederholen

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 07.01.2021 um 17:23 Uhr
C++ 11
Quellcode ausblenden C-Code
#include <iostream>
#include <vector>
using namespace std;

int get_length(int n, int d)
{
    vector<int> v;
    while (true)
    {
        while (n < d) v.push_back(n *= 10);
        n = 10 * (n % d);
        if (n == 0) return 0;
        if (find(v.begin(), v.end(), n) != v.end())
            return (size(v) - (find(v.begin(), v.end(), n) - v.begin()));
        v.push_back(n);
    }
}

int main()
{
    for (size_t i = 1; i <= 100; i++)
        cout << "1/" << i << " => " << get_length(1, i) << endl;;
}