Sunteți pe pagina 1din 11

Fiind dat un numr natural n, scrieti un program pentru calculul expresiei:

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).

Se citesc de la tastatur un numr natural n i un ir de n numere ntregi. Scrieti un


algoritm eficient care determin cea mai mare valoare negativ dintre cele citite,
precum i numrul de aparitii ale acesteia n cadrul irului. n cazul n care irul citit
nu contine nici o valoare negativ, se va afia mesajul NU EXIST.

Exemplu: Pentru n=8 i numerele (10,3,-4,-7,-4,-9,11,-4), se vor afia valorile -4 i 3,


deoarece
-4 este cel mai mare element negativ al irului i apare de 3 ori.

Se citesc de la tastatur dou numere naturale n i p, (1<n<1000,1<p<10). S se afieze


pe ecran, cu spatiu ntre ele, acele numere naturale mai mici sau egale cu n, care au
toate cifrele mai mici sau egale cu p.

Exemplu: pentru n=15 i p=2, se vor afia numerele 0,1,2,10,11,12.

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.

Se citete de la tastatur un numr natural n (100<=n<=999). Dintre numerele naturale


mai mici sau egale cu n, s se afieze acelea care sunt divizibile cu suma cifrelor lor.

Dintre primele n numere naturale, s se afieze acelea care au exact k divizori. Valorile
lui n i k se citesc de la tastatur.

Se citesc de la tastatur dou numere naturale x i y, cu maxim patru cifre fiecare.


Scrieti un algoritm care tiprete pe ecran suma numerelor pare cuprinse ntre x i y
inclusiv.

Exemplu: pentru x=12 i y=23, se va afia valoarea 102.

S se afieze toate numerele perfecte situate n intervalul [p,q], precum i numrul


acestora, unde p i q sunt dou numere naturale date

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 citete de la tastatur un ntreg n, apoi n perechi de numere naturale cuprinse


ntre 0 i 30000. Dintre perechile citite s se afieze acelea cu proprietatea c cele
dou elemente ale perechii au aceeai sum a cifrelor.
Realizati un algoritm care afieaz pe ecran toate numerele pare alctuite din exact dou
cifre. Respectivele valori vor fi scrise pe mai multe linii de ecran, cte cinci pe fiecare
linie, separate prin cte un spatiu.

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.

Se d un ir de numere care se citesc pe rnd de la tastatur, atta timp ct nu s-a


introdus valoarea 0 (care nu face parte din ir). S se afieze perechile de numere
consecutiv citite cu proprietatea c al doilea element al perechii este egal cu dublul
primului.

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.

Exemplu: pentru a=1844657 i b=3, numrul tiprit este 1844000.

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.

Exemplu: pentru n=323958, se va afia pe ecran numrul 2395.

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.

Exemplu: pentru n=275839, algoritmul va tipri numrul 789352.


Se citete de la tastatur un numr natural n alctuit din cel mult opt cifre.

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.

Se citesc de la tastatur valorile a trei variabile n, c1 i c2, unde n este un numr


natural format din cel mult nou cifre, iar c1 i c2 memoreaz cte o cifr.

Realizati un algoritm care nlocuiete cu cifra c2 fiecare aparitie a cifrei c1 n cadrul


numrului n, i afieaz pe ecran valoarea astfel obtinut. n cazul n care cifra c1 nu se
regsete n numrul n, valoarea lui n va rmne nemodificat.

Exemplu: pentru n=149448, c1=4 i c2=2 algoritmul va afia valoarea 129228.

Scrieti un algoritm care citete de la tastatur dou numere naturale x i y, cuprinse n


intervalul [1,100], apoi formeaz n memorie numrul real ce are proprietatea c partea sa
ntreag este egal cu x, iar cifrele aflate dup punctual zecimal sunt cifrele numrului y
n aceeai ordine.

Exemplu: pentru x=12 i y=534, pe ecran trebuie s se afieze numrul 12.534.

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.

Exemplu: dac se citete valoare x=15.231, trebuie s se afieze numrul 231.15.


Se citete de la tastatur un numr natural n (n<100), apoi n numere naturale din
multimea {1,2,3}. Se cere s se afieze cele n valori citite n ordine cresctoare,
folosind un algoritm eficient din punctul de vedere al timpului de executie i al
spatiului de memorare utilizat.

Exemplu: pentru n=19 i valorile citite 3,3,3,3,2,1,2,1,3,2,1,3,2,1,1,3,3,2,3, se va afia pe


ecran irul 1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,3.

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.

S se calculeze puterea la care apare numrul prim p n descompunerea numrului


1*2*3*...*n, pentru un n natural dat. Exemplu: pentru n=36 i p=3, se va obtine
puterea 16.

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".

Se citete de la tastatur un numr natural nenul n cu cel mult nou cifre.

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.

Se citete de la tastatur un numr natural k (1<=k<=4). S se afieze toate palindroamele


de cinci cifre (adic numerele naturale de forma c1c2c3c4c5 pentru care c1=c5 i c2=c4)
cu proprietatea c diferenta n valoare absolut dintre oricare dou cifre alturate este
egal cu k (adic |ci-ci+1|=k, pentru orice i{1,2,3,4}).

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.

Scrieti un program C++ care citete de la tastatur un numr natural n (1<n<30000) i


care determin i afieaz pe ecran numrul divizorilor primi a lui n.

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)

Scrieti un program n limbajul C++ , eficient din punctul de vedere al duratei de


executare, care afieaz toate numerele naturale formate din cifre identice, mai mari dect
10 i mai mici dect o valoare dat n, n<=2.000.000.000.

De exemplu pentru n=195, se afieaz: 11, 22, 33, 44, 55, 66, 77, 88, 99, 111.

b) Explicati n limbaj natural metoda utilizat, justificnd eficienta ei (4-6 rnduri).

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 n=6 i m=6 se afieaz perechile:


16
23
26
36
Se citesc de la tastatur mai multe numere naturale de cel mult 3 cifre. Se tie c se
citesc cel putin 2 numere i c citirea continu, numr cu numr, pn cnd se
citete un numr egal cu primul numr citit. S se scrie un program C++ care citete
numerele i afieaz pe ecran media aritmetic a numerelor pare citite precum i
numrul acestora. Se va afia mesajul NU EXIST dac nu exist nici un numr
par printre cele citite.
Alegeti o metod de rezolvare care va gestiona eficient memoria. De exemplu, dac
se citesc pe rnd numerele 5 6 2 7 9 6 8 5 se vor afia pe ecran valorile 5.5 i 4.

Scrieti un program care citete de la tastatur dou numere naturale a i b (0a,


b200000000) i n cazul n care exist cel putin o aceeai cifr n ambele numere,
afieaz mesajul DA, iar n caz contrar afieaz mesajul NU.

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.

Se citesc de la tastatur mai multe iruri de numere ntregi, fiecare ir terminndu-


se cu valoarea 0. Citirea se ncheie prin introducerea de dou ori consecutive a
valorii 0. S se afieze elementul maxim din fiecare ir, precum i maximul tuturor
irurilor.

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).

Se citete un ir de numere ntregi pn cnd se introduce de dou ori consecutiv


aceeai valoare. S se afieze cte ptrate perfecte sunt n ir.
Exemplu: dac irul este 13 9 56 400 8 25 17 17, acesta contine trei ptrate perfecte (numerele
9, 400 i 25).

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.

Se numete numr "bine ordonat descresctor" un numr natural, cu proprietatea


c cifrele sale citite de la stnga la dreapta sunt n ordine descresctoare. Exemplu:
9653. Scrieti un algoritm care verific dac un numr natural x dat este "bine
ordonat descresctor", afind un mesaj.

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.

Se citete de la tastatur un numr natural par. S se descompun n sum de dou


numere prime (conjectura lui Goldbach).

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 afieze primii n termeni ai irului: 1,2,1,1,2,3,4,3,2,1,1,2,3,4,5,6,4,3,2,1,1,2,....


unde valoarea lui n se citete de la tastatur. Indicatii: n niruirea de mai sus putem
mprti termenii n grupe astfel:

(1,2,1), (1,2,3,4,3,2,1), (1,2,3,4,5,4,3,2,1).... Observm c fiecare grup este alctuit din


numerele naturale de la 1 la 2*k n ordine cresctoare, urmate de numerele de la 2*k la 1 n
ordine descresctoare, unde k ia pe rnd valorile 1,2,3,... Pentru a afia exact n termeni, vom
folosi un ciclu cu test final n care contorul j va numra termenii generati (ciclul executndu-se
ct timp j<=n, unde initial j=1).

S se afieze al n-ulea termen al irului: 1,1,2,1,2,3,1,2,3,4,..., unde valoarea lui n se


citete de la tastatur. Indicatii: irul este alctuit din numrul 1, numerele naturale de la 1
la 2, numerele naturale de la 1 la 3, etc. Pe caz general, irul contine grupe de numere
naturale de la 1 la k, unde k=1,2,3,...

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.

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 un numr natural n (0<n<=25) i un


ir de n numere naturale cu cel mult patru cifre fiecare; programul va determina i va
afia pe ecran numrul maxim de factori primi distincti care pot s apar n
descompunerea n factori primi a unui numr din ir.

Exemplu: pentru n=6 i numerele 18 90 450 24 20 75 se afieaz 3 deoarece 90=23 25 i


450=25 23

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.

Exemplu: Pentru a=3534 i b=5726, se va afia valoarea c=4625.

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.

Exemple: pentru n=720 se va afia DA 6 pentru c 6!=720;

6!=123456; pentru n=721 se va afia NU.

Se citete de la tastatur un numr natural n, 0<n<1000000. S se afieze pe ecran, dac


exist, un numr natural care este strict mai mare dect n i care are exact aceleai cifre
ca i n. Dac nu exist un astfel de numr, se va afia mesajul NU EXIST.
De exemplu, pentru n=165, se poate afia valoarea 561.
a) Alegeti un algoritm eficient ca timp de executare. Descrieti metoda n limbaj natural pe cel
mult 4 rnduri.
b) Scrieti programul /C++ corespunztor metodei descrise.
Realizati un program care afieaz rezultatele operatiilor de mai jos, fr a efectua
nmultirile i adunrile.
S se calculeze puterea la care apare numrul prim p n descompunerea numrului
1*2*3*...*n, pentru un n natural dat. Exemplu: pentru n=36 i p=3, se va obtine puterea
16.

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".

Se citete de la tastatur un numr natural x cu maxim nou cifre. S se afieze


toate numerele care se obtin prin eliminarea pe rnd a cte unei singure cifre din x,
precum i cel mai mare dintre aceste numere.

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:

p=100,1000,... i q=10,100,... La fiecare pas:

memorm n d i r ctul respectiv restul mprtirii lui x la 10;

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.

S-ar putea să vă placă și