Documente Academic
Documente Profesional
Documente Cultură
Algoritmi
1. Algoritmi
Expresii
1.1. Evaluai u r m t o a r e l e expresii:
a) a + 7 5 / b / c - a * 3 . Ounde a = 3 , b = 3 , c = 2 . 5
b) a * b / 2 * c
/ 3unde a = 4 , b = 6 , c=0 . 1
C) 4 / a * a * a u n d e a = 2
d) (n d i v 10 d i v 10 - D / 1 0 * 10, unden=2112
e) (n d i v 100) mod 10 + (n mod 100) d i v 10, unden=1234
f) (n mod 1000) d i v 100 + (n d i v 1000) mod 10, u n d e n = 2 3 6 1 9
g) (n mod 2 = 1) a n d ( ( n < 1 0 ) o r (n> = 1 0 0 ) ) , u n d e n=89
h) (n mod 2 = 1) o r ( ( n > 1 0 ) a n d ( n < 1 0 0 ) ) , u n d e n=98
i) n o t (a>100 a n d a < 2 0 0 ) = n o t (a>100) o r n o t ( a < 2 0 0 ) , unde a=150
j ) n o t ( (n mod 2 = 0) o r (n<10) ), unde n=27
k) (n mod 3 = 0) a n d (n mod 5 = 0) o r (n mod 7 = 0 ) , u n d e n = 5 6
1) n - (n d i v 1 0 ) * 1 0 = n mod 10, unde n=1234
m) (100 - y * y - 3 * y ) / ( x * x ) - y*y, undex=6, y=4
n) n o t (a<b) a n d n o t ( b < = c) o r ( 3 1 mod c = 33 mod b) o r ( ( a - b ) * ( b c ) * ( c - a ) ) ( u n d e a = 3 , b = 5 , c=7
0) ( a - b ) * ( b - a ) <0, unde a i b sunt numere naturale strict pozitive i diferite
p) n o t ( a * a / ( a + a ) < a ) , u n d e a = 5
q) (n mod 1 0 0 0 0 ) * 1 0 + n d i v 10000, unden=12345
r) (n d i v 1000 = 0) a n d (n d i v 100 >0), unde n este numr natural de 3 cifre
S) l / a + l / b + a*b, undea=0 . 1 i b=0 . 2
1.2. Dac a , b ,
c,
d sunt variabile ntregi, a = l ,
urmtoarele expresii f u r n i z e a z rezultatul true:
a) (a < b) o r (c < d)
b) (b*c < d*d) a n d (d - b * c < 0)
c) n o t ( a > b) o r n o t (d < a)
d) (a+d = b+c) a n d n o t ( d - b != c - a )
e) c*d mod 7 ^ (a+d) mod 7
f ) (b < c) a n d (c > d) o r (a < d)
g) n o t (a < c) o r n o t (a+c = 2*b)
h) d / c = c / b
1) d d i v c = c d i v b
b=2,
c =3 ,
d = 4 , care din
Structura liniar
1.3. Care din u r m t o a r e l e operaii atribuie variabilei c u n a din cifrele lui n , tiind c n
este numr natural de exact 5 cifre:
a) c n d i v 10000
b) c - n mod 100
c) c - n d i v 100 mod 10
d) c - n mod 100 d i v 10
e) c <- n - n d i v 10 *10
5
1. Algoritmi
f)
g)
h)
i)
j)
k)
c
c
c
c
c
c
a) a
b 5
a a
b a
a
a
scrie
+ b
- b
- b
a, b
b) n 1234
a <- n mod 100 d i v 10 + n d i v 100 mod 10
scrie a
c) n * 2 5 0 0 0
b .- n mod 1000
scrie b
n
p
x
y
a
= 0)
1. Algoritmi
1.11. Se citete un numr natural n de exact trei cifre. S se determine suma cifrelor lui
n. De exemplu, pentru n = 2 5 1 , suma cifrelor este 8.
1.12. Se citete un numr natural n de cel puin patru cifre. S se determine suma dintre
cifra zecilor i cifra miilor. De exemplu, pentru n = 3 4 7 2 1 , suma cerut este 6.
1.13. Se citete un numr natural n . S se afieze valoarea 1 dac n este impar i 0 dac
n este par. De exemplu, dac n = 3 4 , se va afia 0, iar dac n = 1 2 3 , se va afia 1.
1.14. Se citete un numr natural nenul n. S se calculeze sumele:
a) Si = 2 + 4 + . . . + 2n
b) S2 = 1 + 3 + . . . + ( 2 n - l )
1.15. Scriei un algoritm care citete un numr real x i calculeaz expresia E = x + x 2 + x 4
1.16. Se citesc numerele naturale a i b de pariti diferite (adic a este par i bimpar
sau invers: a este impar i b par) i cu a < b . Scriei un algoritm care s determine
numrul numerelor pare din intervalul [ a , b ] .
Structura alternativ
1.17. Scriei un algoritm care citete trei numere reale x , a , b i afieaz mesajul
Aparine intervalului dac x este n intervalul nchis [ a , b ] , sau mesajul Nu aparine
intervalului, n caz contrar.
Rezolvare:
c i t e t e x, a , b
a n d (x <=b) a t u n c i
r daca (x >= a)
scrie"Aparine intervalului"
| altfelscrie"Nu aparine intervalului"
1. Algoritmi
-n
-n
-n
-n
=
=
=
=
3n
lui
lui
lui
este 1
3 n este 3
3 n este 9
3 n este 7
citete n
atunciscrie"1"
r d a c a n mod 4 = 0
altfel
|- d a c a n mod 4 = 1 a t u n c i s c r i e " 3"
a l t f e l |- d a c a n mod 4 = 1 a t u n c i s c r i e " 9"
altfelscrie"7"
Lfl
Lfl
div
2)
deci
citete n
(n mod 2 = 1 )
rdaca
a t u n c i s - - (n d i v 2)
a l t f e l s * n (n d i v 2)
1.21. Se citesc numerele reale nenule a , b , c , d,cel puin unul din numere fiind
pozitiv i cel puin unul negativ. S se determine suma numerelor pozitive i produsul
celor negative.
Rezolvare:
citete
a, b, c, d
S 4 0
P - 1
(a > 0) a t u n c i s s + a
rdaca
a l t f e l p p*a
(-daca (b > 0) a t u n c i s s + b
a l t f e l p - p*b
[-daca
(c > 0) a t u n c i s
a l t f e l p p*c
s + c
(-daca
(d > 0) a t u n c i s
altfel p
p*d
s + d
s c r i e s,
1. Algoritmi
1.22. Se citete un numr natural n. S se verifice dac n este sau nu numr par de trei
cifre.
Rezolvare:
citete n
(n mod 2 = 0) a n d (n >= 100) a n d (n <= 999) a t u n c i
r daca
s c r i e " n e s t e p a r de t r e i c i f r e "
| a l t f e l s c r i e " n nu e s t e p a r d e t r e i c i f r e "
2 +
atunci
scrie k
1.24. Se citesc cinci numere naturale a , b , c , d i x unde a < b < c < d . S se verifice
dac x este ntr-unui din intervalele [ a , b ] sau [ c , d ] .
1.25. Se citesc trei numere naturale a ,
sunt numere naturale consecutive.
b,
1.26. Se citete un numr natural n . S se verifice dac n este numr natural par
divizibil cu 3 i care are cifra zecilor 7.
1.27. Se citesc dou numere naturale a i b , a < b . S se verifice dac ele sunt numere
impare consecutive.
1.28. Se citesc dou numere naturale de trei cifre a i b , a < b . Cte numere naturale care
au cifra unitilor 0 sunt n intervalul [ a , b ] .
1.29. S se determine cifra maxim a unui numr natural de 3 cifre.
1.30. Se citete numrul natural n. S se determine cifra unitilor numrului 2 n .
1. Algoritmi
1.31. Se citete numrul natural n de 3 cifre. S se verifice dac toate cifrele lui n sunt
identice.
1.32. Se citete numrul natural n. S se verifice dac n este o putere a lui 2 din
intervalul [ 1 0 0 , 1 0 0 0 ] ,
Rezolvare:
Numerele care ndeplinesc condiiile cerute sunt 1 2 8 , 2 5 6 , 5 1 2 . Se citete
n i se verific dac este sau nu unul din ccle trei valori.
1.33. Se citete un numr real x . S se determine i s se afieze modulul lui x .
Structuri repetitive
1.34. Scriei un algoritm care citete un numr natural i determin suma cifrelor sale.
Rezolvare:
citete n
s 0
|-cat t i m p n # 0 e x e c u t a
s <- s + n mod 10
n .- n d i v 10
L*
scrie
n
3
0
l-repeta
s s + n mod 10
n
n d i v 10
'-pana cand n = 0
scrie s
1.35. Scriei un algoritm care citete un numr natural i i determin cifra maxim.
Rezolvare:
citete n
c i f m a x <- 0
timp n # 0 executa
rcat
c i f <- n mod 10
n n d i v 10
| r d a c a (cif > cifmax) a t u n c i
| | cifmax - c i f
I
scrie
^
cifmax
1.36. Scriei un algoritm care citete un numr natural n i verific dac cifrele lui sunt
n ordine cresctoare ncepnd de la cifra unitilor. Un astfel de numr este 5 3 3 0.
10
1. Algoritmi
Rezolvare:
citete n
cresctor
true
cif
1
f-cat t i m p (n !=0) a n d c r e s c t o r
c <- n mod 10
(c < c i f ) a t u n c i
rdaca
c r e s c t o r <- f a l s e
| a l t f e l cif c
executa
La
n <- n d i v
10
r daca
cresctor atunci
scrie "Cifrele sunt in ordine crescatoare"
altfel
s c r i e " C i f r e l e nu s u n t i n o r d i n e c r e s c a t o a r e "
La
1.37. Scriei un algoritm care citete un numr natural i determin oglinditul su. De
exemplu, oglinditul numrului 8 2 6 este 6 2 8.
Rezolvare:
citete n
ogl - 0
(n ^ 0) e x e c u t a
rcat timp
c n mod 10
n - n d i v 10
ogl - ogl*10 + c
La
scrie
ogl
1.38. Se citete un numr natural nenul. S se determine cifrele distincte care apar n
acest numr.
Rezolvare:
Se caut fiecare cifr n parte dac este printre cifrele numrului.
citete n
0,9 executa
rpentrucif
gsit false
k n
t i m p (k != 0) a n d ( n o t g s i t ) e x e c u t a
rcat
(k mod 10 = c i f ) a t u n c i
rdaca
g s i t <- t r u e
La
k - k d i v 10
La
pdaca g s i t
scrie
atunci
cif
La
La
11
1. Algoritmi
1.39. Scriei un algoritm care citete un numr natural nenul care are un numr impar de
cifre i afieaz numrul obinut prin eliminarea cifrei din mijloc. De exemplu, pentru
n = 1 2 3 4 5 , se va afia 1 2 4 5 .
Rezolvare:
Se va determina mai nti numrul de cifre. Fie k acest numr. Vom elimina cifra de pe
poziia k d i v
citete
m <- n
2 + 1.
k 0
pcat timp
k m
tm
m - 1
rpentru i
m
m > 0 executa
k+1
m d i v 10
l , k div 2 executa
m * 10
n
(n d i v m d i v 10)
scrie n
* m + n mod 10
1.40. S se genereze toate numerele de cinci cifre care au cifrele zecilor, sutelor i
miilor egale, iar cifra unitilor s fie strict mai mic dect 5.
Rezolvare:
^-pentru i <- 1 , 9 e x e c u t a
| ppentru i
0, 9 e x e c u t a
| rpentru i ^ 0,4 executa
| | s c r i e i*10000 + j*(1000+100+10)+k
I I 1 -
s c r i e S,
12
1. Algoritmi
1.42. Scriei un algoritm care citete dou numere naturale nenule a i b i determin
cel mai mare divizor comun al lor. De exemplu, pentru a = 1 5 ,
b=12,
cmmdc(a,b)=3.
Rezolvare:
n prima soluie se vor folosi scderile repetate:
c i t e t e a, b
|-cat t i m p (a
| rdaca a > b
a
||
altfel
|
b
!= b) e x e c u t a
atunci
a - b
- b - a
I ^
scrie a
La
scrie a
1.43. Se citete un numr natural n mai mare sau egal cu 2. S se verifice dac n este
sau nu prim.
Rezolvare:
Se caut divizori proprii printre numerele de la 2 la n d i v 2. Dac exist
mcar unul, n nu este prim.
citete
prim
l-pentru
| rdaca
n
true
i <- 2 , n d i v 2 e x e c u t a
(n mod i = 0) a t u n c i
prim f a l s e
La
atunci
rdaca p r i m
scrie"Numrul e s t e prim"
| altfel
s c r i e " N u m r u l nu e s t e p r i m "
La
0 a doua soluie mai bun este urmtoarea. Dac p este divizor al lui n, atunci i k = n
d i v p este divizor al lui n i n plus p * k = n . De aceea se vor cuta posibilii divizori ai
lui n printre numerele de la 2 la radical din n.
13
1. Algoritmi
citete
prim
rpentru
| rdaca
n
true
i - 2, s q r t ( n ) e x e c u t a
(n mod i = 0) a t u n c i
prim
false
I1"
a
atunci
rdaca prim
s c r i e "Numrul e s t e p r i m "
altfel
s c r i e " N u m r u l nu e s t e p r i m "
mbuntim n continuare algoritmul, observnd c 2 este singurul numr prim care
este par. Vom cuta deci eventualii divizori proprii printre numerele impare cuprinse
ntre 3 i s q r t ( n ) . n plus, dac este gsit un di vizor, structura repetitiv trebuie s se
opreasc.
citete n
rdaca n = 2 atunci
scrie"Numarul e s t e prim"
jaltfel
atunci
r d a c a n mod 2 = 0
s c r i e " N u m a r u l nu e s t e p r i m "
altfel
i <- 3
c a t t i m p ( i * i <=n) a n d (n mod i = 0)
i - i + 2
este
rdaca i*i>n atunciscrie"Numarul
a l t f e l s c r i e " N u m a r u l nu e s t e p r i m "
executa
prim"
1.44. Scriei un algoritm care citete un numr natural i determin cifra par maxim a
acestui numr. Dac numrul nu are nicio cifr par, se va afia un mesaj.
1.45. Scriei un algoritm care citete un numr natural i determin cea mai mare cifr a
numrului i de cte ori apare.
1.46. Scriei un algoritm care citete un numr natural n i o cifr k i determin de cte
ori apare cifra k n numrul n.
1.47. Scriei un algoritm care citete un numr natural n i verific dac neste sau nu
egal cu suma ptratelor cifrelor lui n.
1.48. Scriei un algoritm care citete un numr natural care are un numr impar de cifre.
S se afieze cifra din mijloc a numrului.
14
1. Algoritmi
1.49. Scriei un algoritm care citete un numr natural ni afieaz permutrile circulare
ale numrului. De exemplu, pentru n = 1 2 3 4 5, se vor afia: 1 2 3 4 5 ,
51234,
45123, 3 4 5 1 2 ,
23451.
1.50. Scriei un algoritm care citete un numr natural n i determin numrul maxim
obinut din nprin eliminarea unei singure cifre. De exemplu, pentru n = 9 8 3 4, se va
afia 9 8 4 , iar pentru n = 7 4 9 1 , se va afia 7 9 1 .
1.51. Scriei un algoritm care citete un numr natural ni determin numrul obinut
numai din cifrele pare ale lui n. De exemplu, pentru n = 5 4 3 8 4 , se va afia 4 8 4 .
1.52. Scriei un algoritm care citete un numr natural ni determin numrul obinut
prin eliminarea tuturor cifrelor zero. De exemplu, pentru n = 2 0 3 0 0, se va afia 2 3 .
1.53. Scriei un algoritm care citete un numr natural i verific dac acesta este
palidrom. Un numr este palindrom dac cifrele sale egal deprtate de extremiti sunt
egale. De exemplu, 3 1 1 3 i 3 6 7 6 3 sunt numere palindrom.
1.54. Scriei un algoritm care citete un numr natural ni determin cifra de control a
lui n. Cifra de control de obine astfel: se determin suma cifrelor lui n . Dac aceast
sum este mai mare sau egal cu 1 0 , se calculeaz suma cifrelor sumei. Procedeul se
repet pn cnd se obine o sum strict mai mic dect 1 0 . De exemplu, pentru
n=783, 7 + 8 + 3 = 1 8 , 1 + 8 = 9, deci cifra de control este 9.
1.55. Se citesc dou numere naturale nenule m i n. S se determine cifrele distincte ale
lui m care nu apar n n.
1.56. Fie a i b dou numere naturale nenule. S se calculeze produsul a * b fr a
efectua efectiv nmulirea.
1.57. Scriei un algoritm care citete un numr natural n i determin cel mai mare
numr natural p cu proprietatea c n este mai mare sau egal cu 2 P . De exemplu, pentru
n=3 0, numrul p cutat este 4, deoarece n > = 2 4 , dar n < 2 5 .
1.58. Scriei un algoritm care citete un numr natural n i determin cel mai mare
numr natural p cu proprietatea c n este divizibil cu 2 P . De exemplu, pentru n = 2 4 ,
numrul p cutat este 3, deoarece n este divizibil cu 2 3 , dar nu este divizibil cu 2 4 .
1.59. Scriei un algoritm care citete un numr natural n i apoi n numere ntregi i
determin numrul maxim citit. De exemplu, pentru n = 5 i numerele 3 , - 5 5 ,
2,
12, 4, numrul maxim este 1 2 .
15
1. Algoritmi
1.60. Scriei un algoritm care citete un numr natural n i apoi n numere naturale
nenule i determin numrul maxim p cu proprietatea c produsul celor n numere este
divizibil cu 3 P . De exemplu, pentru n = 5 i numerele 2 7 , 1 5 , 1 6 , 5 4 , 7, numrul
p maxim cutat este 6.
1.61. Scriei un algoritm care citete un numr natural n i apoi n numere ntregi i
determin suma numerelor care sunt pozitive, pare i divizibile cu 3.
1.62. Se citesc un numr natural n i un numr real strict pozitiv x . S se calculeze x11.
1.63. Scriei un algoritm care citete un numr natural n i determin divizorii proprii ai
lui n.
1.64. Scriei un algoritm care citete un numr natural i realizeaz descompunerea sa n
factori primi. Se vor afia factorii i exponenii descompunerii.
1.65. Scriei un algoritm care citete dou numere naturale nenule a i b i determin
cel mai mic multiplu comun al lor. De exemplu, pentru a = 1 5 ,
b=12,
cmmmc ( a , b ) = 6 0 .
1.66. Scriei un algoritm care citete un numr natural n > = 2 i apoi n numere naturale
nenule i determin cel mai mare divizor comun al celor n numere.
1.67. Scriei un algoritm care citete un numr natural n i verific dac n este sau nu
superprim. Un numr este superprim dac toate prefixele sale sunt numere prime. De
exemplu, 2 3 3 este superprim, deoarece 2 , 2 3 , 2 3 3 sunt prime.
1.68. S se afieze toate numerele naturale nenule mai mici dect un numr natural n i
prime cu n. Spunem c dou numere naturale a i b sunt prime ntre ele dac
cmmdc ( a , b ) =1.
1.69. Se citete un numr natural nenul M. S se afieze toate numerele prime mai mici
sau egale cu M.
1.70. Scriei un algoritm care citete un numr natural n i determin cel mai mic numr
natural strict mai mare dect n care este prim.
1.71. Scriei un algoritm care citete dou numere naturale n , b ( 2 < = b < = 9) i l
convertete pe n n baza b. De exemplu, pentru n = 1 4 i b = 3 , rezultatul va fi 1 1 2 ( 3 ) .
16
1. Algoritmi
1.72. Scriei un algoritm care citete dou numere naturale n , b unde 2 < = b < = 9 i l
convertete pe n din baza b n baza 1 0 . De exemplu, pentru n = 1 1 2 i b = 3 , rezultatul
va fi 14(io).
1.73. Se citesc dou numere naturale n i b , unde 2 < = b < = 9. S se verifice dac n este
un numr reprezentat n baza b , adic dac toate cifrele sale sunt strict mai mici ca b.
1.74. S se afieze toate numerele naturale de patru cifre care au cifra zecilor 2, 3 sau 4
i suma cifrelor numrului este numr par. Un astfel de numr este 3 3 4 0.
1.75. S se afieze toate numere naturale de cinci cifre, numere divizibile cu 3 i n care
suma dintre cifra zecilor i unitilor este exact 8.
1.76. Se citete de la tastatur un numr natural n . S se afieze al n-lea termen al
irului Fibonacci. irul Fibonacci este definit astfel:
f0=fi=l
f n = f n - i + f n - 2 > pentru orice n > = 2
Primii 6 termeni ai irului sunt deci: 1 ,
1,
2,
3,
5,
8.
1.77. Se citete un numr natural nenul n . S se determine cel mai mare numr care este
termen al irului Fibonacci i care este mai mic sau egal dect n.
1.78. Se citete un numr natural nenul n. S se verifice dac n este sau nu termen al
irului Fibonacci.
1.79. Se citete un numr natural nenul n. S se scrie n ca sum de termeni distinci ai
irului Fibonacci.
1.80. Se consider irul de numere 1 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , . . . S se
deduc modul n care se genereaz termenii irului i s se determine ce numr este pe
poziia n n acest ir, unde n se citete.
1.81. Se d urmtorul ir de numere: 1 , 1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 4 ,
1,
2, 3 , 4 , 5 . . . S se deduc modul n care se genereaz termenii irului i s se
determine ce numr este pe poziia n n acest ir, unde n se citete.
1.82. Se consider ecuaia de gradul al doilea a x 2 + b x + c = 0, unde a , b , c sunt
numere reale, iar a este nenul. Fr a calcula efectiv rdcinile ecuaiei, s se calculeze
suma:
S n = xx11 + x 2 n , unde n este numr natural care se va citi.
17
2. Elemente
limbajului
de
baz
ale
limbajului
C/C++.
Instruciunile
double a, b;
c o u t <<"a = "; c i n >> a ;
c o u t <<"b = "; c i n >> b ;
i f (a == 0)
i f (b == 0) c o u t < < " I d e n t i t a t e " ;
e l s e c o u t <<"Nu e x i s t a s o l u i i " ;
e l s e cout <<"Soluie unica = "<<-b/a;
r e t u r n 0;
}
2.3. Se citesc dou numere ntregi a i b . S se afieze maximul dintre ele.
Rezolvare:
i n t main()
{
i n t a , b, maxim;
c o u t <<"a = "; c i n >> a ;
c o u t <<"b = "; c i n >> b ;
i f (a > b) maxim = a ;
e l s e maxim = b ;
c o u t <<"max("<<a<<","<<b<<")="<<maxim;
r e t u r n 0;
}
2.4. Scriei o expresie care furnizeaz rezultatul 1 dac cel puin una din variabilele
ntregi a , b , c este pozitiv, sau furnizeaz rezultatul 0 dac toate cele trei variabile
sunt negative.
Rezolvare:
(a > 0) | | (b > 0 | | (c > 0)
18
}
2.8. Se citete un numr natural s mai mare sau egal cu 2. S se determine numrul
minim de valori 2 i 3 care adunate dau suma s . De exemplu, s = 1 0 = 2 + 2 + 3 + 3 , deci
doi de 2 i doi de 3. Pentru s = 1 4 , atunci 1 4 = 2 + 3 + 3 + 3 + 3, adic un 2 i patru de 3.
Rezolvare:
Avem urmtoarele cazuri:
I. s mod 3 = 0. Atunci s se scrie ca s / 3 de 3.
II. s mod 3 = 1. Atunci s se scrie ca doi de 2 i ( s - 4 ) / 3 de 3.
III s mod 3 = 2. Atunci s se scrie ca un 2 i ( s - 2 ) / 3 d e 3 .
i n t main()
<
i n t s, r ;
cin >> s ;
r = s % 3;
switch (r)
19
{
c a s e 0: c o u t " z e r o de 2 s i "<< s / 3 <<" de 3 " ; b r e a k ;
c a s e 1: c o u t < < " d o i de 2 s i "<< ( s - 4 ) / 3 <<" de 3 " ; b r e a k ;
c a s e 2: c o u t " u n 2 s i "<< ( s - 2 ) / 3 <<" de 3 " ; b r e a k ;
}
return
}
0;
cout<<"numrul de c i f r e e s t e
"<<k;
2.21. Se citete un numr natural nenuln i o cifr k. S se determine de cte ori apare
cifra k n n.
21
{
if
(n % 10 == k)
cnt++;
n /= 10;
cout<<k<<" a p a r e de "<<cnt<<"
ori";
2.22. Se citete un numr natural nenul n. S se determine cel mai mare numr natural p
cu proprietatea c 2 p < = n . De exemplu, pentru n = 3 0, p va fi 4.
Rezolvare:
c i n >> n ;
k = 1; P = 0;
w h i l e (k <= n)
{
P++;
k *= 2 ;
c o u t << p - 1 ;
2.23. Se citete un numr natural nenul n. S se determine numrul cifrelor de 0 cu care
se termin n. De exemplu, n = 2 0 3 0 0 are dou cifre de 0 cu care se termin.
Rezolvare:
i n t n, n r Z ;
c i n >> n ;
nrZ = 0;
w h i l e (n % 10 == 0)
{
}
nrZ++;
n /= 10;
c o u t << n r Z ;
2.24. Se citete un numr natural n. S se verifice dac n este sau nu alternant, n sensul
c orice cifr par este ntre dou impare i orice cifr impar se afl ntre dou pare. De
exemplu, 5 2 7 6 9 1 i 2 3 2 3 4 5 6 7 sunt alternante, dar 2 3 4 6 7 nu este.
Rezolvare:
i n t n, a l t e r n a n t ,
c i n >> n ;
c = n % 10;
n /= 10;
a l t e r n a n t = 1;
w h i l e (n > 9)
{
c;
22
(n % 2 == c % 2)
a l t e r n a n t = 0;
n = 0;
}
}
c = n % 10;
n /= 10;
n, p, x, c n t ;
>> n;
= 0;
(p = 5; p <= n ; p += 5)
x = p;
while (x % 5 == 0)
{
X /= 5;
cnt++;
cout << c n t ;
Se poate optimiza soluia anterioar observnd c sunt numere care se mpart o
singur dat la 5 (precum 5 , 1 0 , 1 5 , 2 0 , 3 0 ) , altele se mpart de dou ori la 5
(precum 2 5 , 5 0 , 7 5), altele de trei ori (precum 1 2 5) etc. De aici ideea c sunt n / 5
numere care se mpart cel puin o dat la 5, n / 2 5 numere care se mpart de cel puin
23
n, p, c n t ;
>> n ;
= 0;
1;
(p = 5 ; p <= n ; p *= 5)
c n t += (n / p ) ;
c o u t << c n t ;
}
cout
<< P ;
24
}
X = X
x;
n /= 2;
}
cout << p ;
2.29. Se consider numerele naturale nenule p , q , n . Fien scnduri numerotate de la 1
la n. Se vopsesc mai nti scndurile din p n p cu galben, apoi se vopsesc din q n q cu
albastru. S se determine cte scnduri sunt vopsite cu galben, cte sunt vopsite cu
albastru i cte sunt vopsite cu verde (adic au fost vopsite i cu galben i cu albastru i
culorile s-au combinat). De exemplu, pentru p = 7 , q = 5 i n = 4 3, sunt vopsite cu galben
5 scnduri (cu numerele 7 , 1 4 , 2 1 ,
2 8 , 4 2 ) , cu albastru 7 (adic 5 ,
10,
1 5 , 2 0 , 2 5 , 3 0 , 4 0), iar cu verde una singur (scndura 3 5).
Rezolvare:
Sunt vopsite x = n / c m m m c ( p , q ) cu verde, n / p - x scnduri cu galben i n / q x scnduri cu albastru.
cin >> p >> q >> n ;
/ / se memoreaza i n x cmmdc(p,
x = p;
y = q;
while (y != 0)
{
q)
d = x % y;
x = y;
y = d;
}
/ / c a l c u l cmmmc:
d = (p / x) * q ;
//numrul de s c n d u r i v o p s i t e cu
x = n / d;
cout < < " \ n g a l b e n e :"<< ( n / p - x ) ;
cout < < " \ n a l b a s t r e :"<< ( n / q - x ) ;
cout < < " \ n v e r z i :"<< x ;
albastru
2.30. Se citete un numr natural n , apoi se citesc exact n - 1 numere naturale distincte
din mulimea { 1 , 2 ,..., n } . S se determine numrul natural care lipsete din mulime.
25
i++)
c i n >> x ;
S - = X;
cout<<"numrul
lipsa
este
"<<s;
2.31. Se citete n apoi se citesc exact n - 2 numere naturale distincte cuprinse ntre
n. Care sunt cele dou numere naturale cuprinse ntre 1 i n care lipsesc?
Rezolvare:
Se calculeaz sumele Si = l + 2 + . . . + n i s 2 = l 2 + 2 2 + . . . + n 2 . Apoi cele
numere citite se scad din s i i din s 2 . Dac notm cu x i y cele dou numere
lipsesc, atunci, dup scderile celor n - 2 numere, vom obine:
a+b=Si
a 2 +b 2 =s 2
unde Si i s 2 sunt cunoscute. Obinem un sistem de dou ecuaii cu necunoscutele
b care se rezolv uor.
1 i
n-2
care
a i
26
}
if
( e x p o % 2 == 1)
q = q * factor;
a2,
. . . ,
a n . Cu cte
2.41. Se citete un numr natural nenul n . S se determine cel mai mic numr natural p ,
strict mai mare dect n , care este prim. Exemplu: n = 2 0, atunci p = 2 3.
2.42. (Conjectura Goldbach) Se citete un numr natural par n strict mai mare dect 2.
S se determine dou numere prime care au suma egal cu n .
27
28