👤

Cerinţa
Se citește un număr b, reprezentând o bază de numerație și apoi n numere naturale, reprezentând cifrele unui număr scris în baza b. Determinați transformarea acestui număr în baza 10.

Date de intrare
Programul citește de la tastatură numerele b n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran numărul S, reprezentând valoarea cerută.

Restricţii şi precizări
2 ≤ b ≤ 9
1 ≤ n ≤ 10
cele n numere citite vor fi mai mici decât b

Exemplu
Intrare

5 6
1 0 2 2 4 1
Ieșire

3446


Răspuns :

In general, cand transformi din baza b in baza 10, si presupunand ca ai o reprezentare in baza b de n cifre
[tex]N_{b}=a_{0}a_{1}a_{2}.....a_{n-2}a_{n-1}[/tex]
Atunci formula lui transformata este:
[tex]N_{10}=a_{0}*b^{n-1}+a_{1}*b^{n-2}+a_{2}*b^{n-3}+a.....+a_{n-2}*b^{1}+a_{n-1}*b^{0}[/tex]
Ca sa tii minte mai usor: indicele coeficientului+exponentul puterii bazei, trebuie sa dea intotdeauna n-1, unde n este numarul de cifre.

Hai sa aplicam acum pentru exemplul tau: b=5, n=6 si
[tex]N_{5}=102241[/tex]
Atunci transformam dupa formula
[tex]N_{10}=1*5^{5}+0*5^{4}+2*5^{3}+2*5^{2}+4*5^{1}+1*5^{0}=3125+0+2*125+2*25+4*5+1=3446[/tex]

Aici este codul pentru program:

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    int i,b,n,rez=0;
    cin>>b>>n;
    int a[n];
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    //pow(a,b) este a la puterea b
   // vezi ca puterea este la inceput mare pentru ca citim de la stanga la dreapta
   //si apoi pe masura ce i creste, exponentul scade pana la i=n-1 cand devine 0
    for(i=0;i<n;i++){
        rez+=a[i]*pow(b,n-1-i);
    }
    cout<<rez;
   
   









Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de ajutor, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și vă încurajăm să ne salvați în lista de favorite!


Ze Questions: Alte intrebari