Cerința
Se consideră următoarele operații, care se aplică numerelor naturale:
op 1
– se adaugă la număr cifra4
– din13
se obține134
op 2
– se adaugă la număr cifra0
– din13
se obține130
op 3
– dacă numărul este par, se împarte la2
– din20
se obține10
Dându-se un număr natural n
, să se determine un șir de operații dintre cele de mai sus prin care, pornind de la valoarea 4
, se ajunge la n
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran un șir de valori din mulțimea {1,2,3}
, astfel încât, aplicând în ordine operațiile corespunzătoare se ajunge de la valoarea 4
la valoarea n
.
Restricții și precizări
1 ≤ n ≤ 100.000
- orice soluție cu mai puțin de
100.000
de operații este acceptată
Exemplu
Intrare
5
Ieșire
3 3 2 3
Explicație
Pornim de la 4
. Se aplica op 3
și se obține 2
; se aplică op 3
și se obține 1
; se aplică op 2
și se obține 10
; se aplică op 3
și se obține 5
.
#include <bits/stdc++.h> using namespace std; int main() { int n , a[25000] , p = 0; cin >> n; while(n != 4) { if(n % 10 == 4) {a[p] = 1;p++;n /= 10;} else if(n % 10 == 0) {a[p] = 2; p++; n /= 10;} else {a[p] = 3; p++ ; n *= 2;} } for(int i = p - 1 ; i >= 0 ; --i) cout << a[i] << " "; }