Documente Academic
Documente Profesional
Documente Cultură
E =1*2+2*3+3*4+...+n*(n+1).
Scrieti un algoritm care citete de la tastatur un numr natural nenul n, precum i n numere
naturale, cu maximum nou cifre fiecare, apoi calculeaz i afieaz pe ecran, cte numere
prime contine irul citit.
Exemplu: pentru n=5 i valorile 12 3 9 7 1 se va afia pe ecran valoarea 2 (n irul dat exist
dou numere prime i anume 3 i 7).
Indicatii: Citim numerele n aceeai variabil x, ntru-un ciclu n care contorul i, cu valorile 1,2,
,n, nu are are rol dect acela de a numra citirile. Pentru fiecare x citit, testm dac este prim
cu algoritmul cunoscut, iar n caz afirmativ incrementm un contor care numr valorile prime
(initializat cu 0).
Realizati un algoritm care afieaz "cifra de control" a unui numr natural, determinat astfel:
se calculeaz suma cifrelor numrului, apoi suma cifrelor sumei obTinute, .a.m.d., pn
cnd rezultatul este o singur cifr.
Dou numere naturale a i b se numesc gemene dac sunt prime i diferenta lor n
modul este 2. S se afieze perechile de numere gemene care se pot forma pe
multimea numerelor naturale mai mici sau egale cu n, unde valoarea lui n se citete de
la tastatur.
Se cere un algoritm eficient de rezolvare.
Indicatii: Pentru a evita testarea conditiei privitoare la diferenta n modul este suficient s
analizm perechile de numere de forma (i,i+2) cu i=1,2,...,n-2, i pentru fiecare pereche s testm
dac i i i+2 sunt ambele numere prime. Realizarea unui algoritm eficient presupune:
s nu se parcurg divizorii inutili
s nu se mai testeze i+2 dac i nu este prim.
Dintre primele n numere naturale, s se afieze acelea care au exact k divizori. Valorile
lui n i k se citesc de la tastatur.
S se afieze numerele prime de trei cifre care citite invers sunt tot numere prime.
Se dau dou numere natural n i p. S se stabileasc dac p este prim i n caz afirmativ
s se afieze la ce putere apare p ca factor prim n descompunerea numrului n n factori
primi.
Un numr natural se numete perfect dac este egal cu suma divizorilor si. Exemplu:
6=1+2+3. S se verifice dac un numr natural dat este perfect, afindu-se un mesaj
corespunztor.
ntr-o urn se gsesc mai multe bile roii i albe, pe fiecare bil fiind nscris un numr
natural. S se extrag pe rnd bile, pn cnd am scos din urn cel putin m bile albe sau n
bile roii. Scrieti un program care simuleaz aceast operatie, citind de la tastatur
numrul fiecrei bile extrase. n final, programul va afia dac cel mai mic numr extras
se gsete pe o bil alb sau roie.
Se dau dou numere natural n i p. S se stabileasc dac p este prim i n caz afirmativ
s se afieze la ce putere apare p ca factor prim n descompunerea numrului n n factori
primi.
Realizati un algoritm care afieaz pe ecran toate numerele impare alctuite din
exact dou cifre. Respectivele valori vor fi scrise pe mai multe linii de ecran, cte
trei pe fiecare linie, separate prin cte un spatiu.
Scrieti un algoritm care afieaz pe ecran primii 20 de termeni impari ai irului lui
Fibonacci (0,1,1,2,3,5,8,13,21,), cte 5 pe o linie. Termenii afiati pe aceeai linie a
ecranului vor fi separati ntre ei prin cte un spatiu.
Un numr natural se numete perfect dac este egal cu suma divizorilor si.
Exemplu: 6=1+2+3. S se verifice dac un numr natural dat este perfect, afindu-se un
mesaj corespunztor.
Se citesc de la tastatur dou numere naturale a i b unde a contine cel mult nou cifre,
iar b este strict mai mic dect numrul de cifre a lui a. Scrieti un algoritm care nlocuiete
cu 0 ultimele b cifre ale numrului a i afieaz pe ecran valoarea astfel obtinut.
Scrieti un algoritm care elimin prima i ultima cifr dintr-un numr natural n citit de la
tastatur. Numrul dat poate avea minim 3 i maxim nou cifre.
Se citete de la tastatur un numr natural n cu maxim nou cifre. Scrieti un algoritm care
afieaz pe ecran numrul care se obtine cu cifrele de rang impar ale lui n luate n ordine
natural, urmate de cifrele de rang par luate n ordine invers. Prin rangul unei cifre
ntelegem pozitia pe care o ocup cifra n cadrul numrului, numrat de la dreapta la
stnga.
Scrieti un algoritm care afieaz mesajul DA dac numrul dat are toate cifrele identice,
respectiv NU n caz contrar. Exemplu: pentru n=77777, se va afia mesajul DA
Se citesc de la tastatur dou numere naturale n i k, unde n poate avea maxim nou cifre
i 0<k<10. Scrieti un algoritm care afieaz numrul obtinut prin eliminarea primelor k
cifre ale lui n. Dac valoarea lui k este mai mare dect numrul de cifre ale lui n, se va
afia mesajul IMPOSIBIL.
Scrieti un algoritm care citete de la tastatur un numr natural m cu maxim nou cifre i
o cifr zecimal c apartinnd multimii {0,1,2,...,9}, apoi determin i afieaz numrul de
cifre ale lui n care apartin intervalului [c-1,c+1].
Exemplu: pentru n=1233 i c=3 se va afia valoarea 3, iar pentru n=650 i c=3 algoritmul trebuie
s tipreasc valoarea 0.
Indicatii: Mai nti formm n memorie numrul z=0.y, adic numrul care are partea ntreag 0
i partea zecimal alctuit din cifrele lui y. Pentru aceasta, mprtim n mod repetat pe y la 10,
pn cnd ctul mprtirii devine mai mic dect 1. Numrul cutat va fi x+z. Pentru exemplul din
enunt, cu x=12 i y=534, avem z=0.534, iar x+z=12+0.534=12.534.
Se citete de la tastatur un numr real x, care poate contine cel mult patru cifre n
partea ntreag i cel mult ase cifre dup punctul zecimal. Realizati un algoritm
care construiete n memorie i afieaz pe ecran numrul obtinut prin inversarea
ntre ele a prtii ntregi i a prtii zecimale a prtii lui x.
Indicatii: Folosim trei contoare c1, c2, c3, n care vom numra valorile de 1, 2, respectiv 3 din
ir. Citim pe rnd cele n valori n aceeai variabil x, ntr-un ciclu n care contorul i=1,2,,n
numr citirile. Pentru fiecare x citit, n functie de valoarea sa, incrementm contorul
corespunztor. n final, folosim trei cicluri distincte, afim numrul 1 de c1 ori, valoarea 2 de c2
ori i numrul 3 de c3 ori.
S se determine toate numerele de trei cifre cu proprietatea c suma inverselor cifrelor lor
este un numr subunitar, iar cifrele sunt n ordine strict cresctoare. Exemplu: Numrul
245: 1/5+1/4+1/2=fractie subunitar.
Indicatii: se genereaz toate posibilittile de a scrie cifre n ordinea cresctoare i se verific dac
suma inverselor cifrelor este un numr subunitar. n caz afirmativ se va afia numrul format cu
cele trei cifre.
Indicatii. Facem mai nti observatia c pentru un n foarte mare, este imposibil memorarea
produsului 1*2*3*...*n ca numr ntreg. De aceea, rezolvarea trebuie s evite folosirea acestui
produs. Dac p este numr prim, atunci din "p divide a*b" rezult "p divide a" sau "p divide b".
n consecint, vom determina puterea lui p n dezvoltarea fiecrui factor al produsului 1*2*...*n
i vom nsuma puterile obtinute.
Cum p este prim, vom lua n considerare numai factorii de forma k*p, unde k va lua valori de la
1 pn la "parte ntreag din n/p".
Scrieti un algoritm care gsete i afieaz un numr natural k astfel nct produsul 1*2*3**
k-1*k s aib o valoare ct mai apropiat de n. Exemplu: pentru n=25 se va obtine k=4
(1*2*3*4=24), iar pentru n=119 programul va afia numrul 5.
Scrieti un algoritm care afieaz pe ecran, separate prin virgul, toate numerele naturale
de patru cifre care au prima cifr strict mai mic dect a doua, a doua cifr strict mai mic
dect a treia, i a treia cifr strict mai mic dect a patra.
Exemplu: cteva astfel de numere ar fi 1201, 1202, 1203,, 8979, 8989.
Indicatii: pentru a obtine toate numerele de forma c1c2c3c4 care s respecte monotonia dorit,
adic c1<c2, c2>c3 i c3<c4, putem proiecta patru cicluri imbricate, n care contoarele vor lua
valorile c1=1,...,8, c2=c1+1,...,9, c3=0,...,c2-1 i c4=c3+1,...,9. Numerele cutate sunt de forma
c1*1000+c2*100+c3*10+c4.
Indicatii: singurele numere care satisfac proprietatea cerut au una din formele (i,i-k,i,i-k,i) (i,i-
k,i-2*k,i-k,i) (i,i+k,i,i+k,i) (i,i+k,i+2*k,i+k,i).
Folosim un ciclu n care contorul i va primi ca valori cifrele zecimale de la 1 la 9; pentru fiecare
i, afim numerele ce se ncadreaz n formele de mai sus, avnd ns grij s punem i conditiile
de existent a lor: i-k>=0, i-2*k>=0, i+k<=9, i+2*k<=9.
Exemplu: pentru n=24 se afieaz 2 (deoarece are 2 divizori primi: 2 i 3), iar pentru numrul 60
se afieaz 3 (deoarece are 3 divizori primi: 2, 3 i 5).
Se citesc de la tastatur trei numere naturale de cel mult opt cifre fiecare n, a i b i se
cere s se afieze pe ecran cte numere naturale mai mici sau egale cu n sunt multipli a
lui a, dar nu sunt multipli a lui b. De exemplu, dac n=100, 108 a=12, b=8, rezultatul
afiat va fi 4 (numerele mai mici sau egale cu 100 care sunt multipli a lui 12 dar nu i a
lui 8 sunt 12, 36, 60, 84).
a) Alegeti o metod eficient de rezolvare i descrieti n limbaj natural metoda aleas justificnd
eficienta acesteia (4-6 rnduri)
De exemplu pentru n=195, se afieaz: 11, 22, 33, 44, 55, 66, 77, 88, 99, 111.
Scrieti un program C++ care citete de la tastatur dou numere naturale nenule n i m
(n<100, m<100), determin i afiez pe ecran toate perechile a, b de numere naturale
nenule distincte, cel mult egale cu n, care au cel mai mic multiplu comun egal cu m.
Perechile se vor afia pe cate o linie, iar numerele corespunztoare fiecrei perechi vor fi
separate printr-un spatiu, ca n exemplu.
De exemplu, pentru a=83 i b=119 se va afia pe ecran mesajul NU, iar pentru a=5003 i b=720
se va afia DA.
Indicatii: Pentru a asigura ncheierea citirii la ntlnirea a dou zerouri consecutive procedm
astfel: n ciclul de citire, nainte de citirea unui numr n variabila x, salvm x-ul citit la pasul
anterior ntr-o variabil prec cu sensul de termen precedent (initial citim primul x nainte de
ciclu i precx). Astfel, citirea se ncheie n momentul n care prec=0 i x=0.
Folosim dou variabile max i maxg, n care vom retine maximul fiecrui ir i maximul global.
Dup citirea fiecrui nou x, dac acesta este diferit de 0 actualizm max (prin comparare cu max
de la pasul anterior, unde initial max-MAXINT), iar la ntlnirea valorii 0 actualizm similar
maxg (prin comparare cu max).
Indicatii. Citim numerele pe rnd ntr-un ciclu, n aceeai variabil x. Pentru fiecare x citit, dac
este ptrat perfect ( x = [ x ] ) incrementm un contor (initializat cu 0). La fiecare pas, nainte de
citirea unui nou numr n variabila x, salvm x-ul curent ntr-o variabil y. Astfel, ciclul se
execut pn cnd x=y.
Indicatii. Presupunem mai nti c numrul x este "bine ordonat cresctor", initializnd cu true o
variabil boolean. Retinem prima cifr a lui x (x mod 10) n variabila y. Apoi, ntr-un ciclu,
extragem pe rnd celelalte cifre. La fiecare pas, dac cifra curent este mai mic dect cifra
anterior extras y, variabila boolean devine false (numrul nu mai poate fi bine ordonat
cresctor), apoi salvm cifra curent n y (cifra curent va deveni cea precedent la urmtorul
pas).
Un numr natural are aspect de munte, dac cifrele sale sunt n ordine cresctoare
pn la o anumit pozitie k i n ordine descresctoare ncepnd cu acea pozitie.
Exemplu: 235754. Pentru un numr natural n citit de la tastatur, s se verifice
dac are aspect de munte, afindu-se un mesaj corespunztor.
Indicatii. Mai nti se stabilete cte cifre are numrul, cu ajutorul unui ciclu de mprtiri la 10
similar cu cel folosit pentru extragerea cifrelor. Presupunnd c numrul are n cifre, primele k
cifre trebuie s fie n ordine cresctoare, iar restul de n-k cifre n ordine descresctoare.
Realizm n continuare o testare logic prin intermediul unei variabile booleene ok, initialzat cu
true. Extragem separat ultima cifr. Apoi ntr-un ciclu ncepem s extragem cifrele de la dreapta
la stnga, ncepnd cu penultima, mergnd cel mult pn la cifra de rang k (deci fcnd n-k-1
extrageri). La fiecare pas, dac cifra extras este mai mic dect cifra obtinut la extragerea
anterioar, atunci ok devine false. Dac la finele acestui ciclu ok a rmas true, atunci vom
continua cu extragerea restului cifrelor, de la rangul k pn la rangul 1, procednd absolut
similar.
Pentru un ntreg n dat, s se afieze toate perechile de numere naturale mai mici sau egale
dect n cu proprietatea c cel mai mare divizor comun al elementelor perechii este o
valoare dat d.
Indicatii. Pentru n=4, perechile de numere naturale mai mici dect n sunt (1,2), (1,3), (1,4), (2,3),
(2,4) i (3,4). Pe caz general, sunt de forma (i,j) cu i=1,2,...,n-1 i j=i+1,...,n. Formm aceste
perechi n dou cicluri, i pentru fiecare pereche (i,j) determinm cel mai mare divizor comun al
elementelor perechii, dup care testm dac rezultatul este egal cu d. Atentie, algoritmul de
c.m.m.d.c. nu poate opera direct asupra lui i i j, ntruct i i j sunt variabile contor n cicluri, iar
modificarea lor n interiorul algoritmului lui Euclid ar altera functionarea ciclurilor.
Indicatii: tiind c n=i+(n-i), formm toate perechile de forma (i,n-i), cu i=1,2,...,n-1. Pentru
fiecare dintre aceste perechi testm dac numerele care compun perechea (i care nsumate dau
n) sunt prime; n caz afirmativ am gsit o descompunere.
S se determine toate numerele de trei cifre cu proprietatea c suma inverselor cifrelor lor
este un numr subunitar, iar cifrele sunt n ordine strict cresctoare. Exemplu:
Se citesc de la tastatur dou numere ntregi a i b. S se verifice dac cele dou numere
sunt termeni consecutivi ai irului lui Fibonacci.
Indicatii. ntr-un ciclu while-do generm termeni ai irului atta timp ct termenul obtinut este
mai mic sau egal dect a. Dup ieirea din ciclu testm dac 111 ultimul termen generat este mai
mare dect a sau egal cu a. n primul caz rspunsul la ntrebarea din enunt este negativ. n al
doilea caz determinm urmtorul termen i verificm dac este egal cu b.
Scrieti un program C++ care citete de la tastatur dou numere naturale a i b cu acelai
numr de cifre (0<a<30000, 0<b<30000). Programul va construi i afia pe ecran
numrul natural c cu proprietatea c fiecare cifr a acestuia este partea ntreag a mediei
aritmetice a cifrelor situate pe aceleai pozitii n scrierea numerelor a i b.
Se spune despre un numr natural c este superprim dac att el ct i toate prefixele lui
sunt numere prime. De exemplu, numrul 313 este un numr superprim pentru c 313
este prim i prefixele: 3, 31 sunt numere prime. Scrieti un program C++ care citete de la
tastatur un numr natural n cu cel mult opt cifre i care verific dac n este superprim.
Programul afieaz pe ecran mesajul DA dac numrul este superprim, astfel va afia
mesajul NU.
Scrieti un program C++ care citete de la tastatur un numr natural n cu cel mult nou
cifre i care determin dac exist un numr natural k cu proprietatea c n=123
k. Dac exist un astfel de numr, programul va afia pe ecran mesajul DA urmat de
numrul k, separate printr-un spatiu, astfel va afia mesajul NU.
Indicatii. Facem mai nti observatia c pentru un n foarte mare, este imposibil memorarea
produsului 1*2*3*...*n ca numr ntreg. De aceea, rezolvarea trebuie s evite folosirea acestui
produs. Dac p este numr prim, atunci din "p divide a*b" rezult "p divide a" sau "p divide b".
n consecint, vom determina puterea lui p n dezvoltarea fiecrui factor al produsului 1*2*...*n
i vom nsuma puterile obtinute. Cum p este prim, vom lua n considerare numai factorii de
forma k*p, unde k va lua valori de la 1 pn la "parte ntreag din n/p".
Exemplu: pentru x=425978 rezult numerele: 42597, 42598, 42578, 45978, 25978, iar cea
mai mare dintre acestea este 45978
Indicatii: Numrul rezultat prin eliminarea ultimei cifre se obtine prin simpla mprtire a lui x la
10. Cu acest numr initializm variabila max n care vom actualize maximul dintre numerele
obtinute prin eliminarea cte unei cifre.
Algoritmul pentru eliminarea celorlalte nr_c-1 cifre se bazeaz pe un ciclu al crui contor k are
doar rolul de a numra paii (k=2,3,...,nr_c, unde nr_c reprezint numrul de cifre ale lui x,
determinat cu algoritmul clasic de extragere a cifrelor). n corpul ciclului folosim dou variabile
intermediare p i q ale cror valori vor fi succesiv:
formm n y numrul rezultat prin eliminarea cifrei de la pasul respectiv, dup relatia
y=d*q+r mod q;
actualizm p i q: p=p*10 i q=q*10;
actualizm max: dac numrul rezultat y este mai mare dect max-ul curent,atunci y devine
noul maxim.