Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int D (int N)
- {
- int a=abs(N),b=1;
- while (a>9)
- {
- b*=(a%10);
- a=(a-(a%10))/10;
- }
- b*=a;
- return b;
- }
- int S (int N, int x)
- {
- if (x==0) return N;
- else return D(S(N,x-1));
- }
- int main ()
- {
- int N;
- cin >> N;
- int a=0,b=1,K=-1;
- while (a!=b)
- {
- K++;
- a=S(N,K);
- b=S(N,K+1);
- }
- cout<<K<<endl;
- }
- /*
- Funkcja D jest określona na liczbach całkowitych w następujący sposób:
- D(N) = N, gdy 0 ? N ? 9;
- D(N) = iloczyn cyfr reprezentacji dziesiętnej liczby abs(N) w przeciwnym przypadku.
- Dana jest liczba całkowita N. Ciąg S konstruujemy następująco:
- S[0] = N
- S[1] = D(N)
- S[2] = D(D(N))
- ...
- S[K] = DK(N)
- ...
- Napisz funkcję, która, mając daną liczbę całkowitą N, zwraca taką najmniejszą nieujemną liczbę całkowitą K, że S[K] = S[K+1],
- gdzie S jest ciągiem skonstruowanym dla liczby całkowitej N. Funkcja ta powinna zwracać ?1, jeśli taka liczba K nie istnieje.
- */
Add Comment
Please, Sign In to add comment