Informatică, întrebare adresată de Bia20, 9 ani în urmă

Se considera algoritmul alaturat ,reprezentat in pseudocod:
citeste n,k
(numere naturale nenule k>1)
Pn c-0
cat timp pn=0 executa
x←n
cat timp x%k=0 executa
x←[x/k]
daca x=1 atunci
Pn←n
n←n-1
Scrie Pn
a) Scrieti valoarea afisata daca se citesc,in aceasta ordine,numerele 48 si 6.

Anexe:

artur99: al 2-lea cât timp e înăuntru la primul?
artur99: Poți să faci o poză la cod de pe caiet sau din carte și să o atașezi la întrebare?
Bia20: da,imediat
artur99: ok, mersi :D
Bia20: gata :)
artur99: Ok, verific acum, mersi
Bia20: multumesc si eu :)
artur99: Trebuie tabelul de valori sau doar răspunsul?
Bia20: si tabelul,te rog
artur99: ok :D

Răspunsuri la întrebare

Răspuns de artur99
1
Programul ia toate numerele de la n în jos și verifică dacă k la o oarecare putere este egal cu vreunul dintre numere... În cazul de mai sus, n scade de la 48 până ajunge la 36, care e egal cu k² (6²)

Am atașat tabelul de valori. Răspunsul este: 36...

Codul transcris în C++:

#include <iostream>
using namespace std;
int main(){
    int n,k,x,pn;
    cin>>n>>k;
    pn = 0;
    while(pn==0){
        x=n;
        while(x%k==0){
            x=x/k;
        }
        if(x==1)
            pn=n;
        n--;
    }
    cout<<pn;
}

L-am rulat și dă același rezultat: 36 :D


Anexe:

artur99: Un alt exemplu pentru k=6 ar putea fi n=230, unde ar scădea până la 216, care ar fi k la puterea a 3-a, și se afișează 216
Bia20: mersi mult :)
artur99: cu plăcere :)
Alte întrebări interesante