Mă puteți ajuta să rezolv toate problemele in C++.
Răspunsuri la întrebare
Răspuns:
1. int n,C=0;
cin>>n;
while (n%10==0)
{
C=C+1;
n=n/10;
}
cout<<C;
2. int a,n;
cin>>a;
cin>>n;
cout<<a*pow(10,n);
3. int a, b, copa, copb;
cin >> a;
cin >> b;
copa = a;
copb = b;
while (copa != copb)
{
if (copa>copb)
copa = copa - copb;
else copb = copb - copa;
}
cout << copa << " ";
cout << (a*b) / copa;
4. int n, i, S, copi;
cin>>n;
for (i=1; i<=n; i++)
{
S = 0;
copi = i;
while (copi != 0)
{
S = S + copi % 10;
copi = copi / 10;
}
if (S%2 != 0)
cout<<i<<" ";
}
5. int a, b, n;
cin>>a;
cin>>b;
cin>>n;
for (int i = a; i <= b; i++)
{
if (n % i == 0)
cout<<i<<" ";
}
6. int n;
float S,C=1;
cin>>n;
S=n;
for (int i = 1; i <= n/2; i++)
{
if (n % i == 0)
{
S = S + i;
C = C + 1;
}
}
cout<<S/C;
Explicație:
Problemele 1, 2, 4, 5 sunt destul de usoare, nu cred ca vei avea dificultati in a le intelege. La problemele 3 si 6 in schimb sunt cateva lucruri de precizat.
La 3 am calculat, in prima faza, cmmdc al numerelor a si b (le-am memorat in alte 2 variabile, copa si copb, pentru a nu le pierde continutul). Dupa care m-am folosit de proprietatea ca a * b = (a,b) * [a,b], adica produsul a 2 numere este egal cu produsul dintre cmmdc si cmmmc al acestora. De aici rezulta ca cmmmc este egal cu a*b / cmmdc (in rezolvare, copa este egal cu copb dupa ce am iesit din structura while si ambele memoreaza cmmdc al numerelor a si b).
La 6 algoritmul pare relativ usor, dar nu e chiar asa. La aceasta problema e un detaliu care iti poate scapa foarte usor, acesta fiind declararea variabilelor. Dupa cum poti observa, am memorat in S suma divizorilor lui n, iar in C numarul de divizori ai lui n. Teoretic, ambele numere memoreaza valori intregi, dar pentru a calcula media aritmetica a divizorilor lui n trebuie sa le impartim. Aici e partea interesanta. Daca as fi declarat S si C ca fiind numere intregi (int), raportul acestora ar fi tot un numar intreg (de exemplu, daca S=7 si C=3 si ambele variabile sunt de tipul int, S/C = 7/3 = 2). Cu alte cuvinte, se ia in considerare doar partea intreaga a raportului dintre cele 2 numere. In schimb, daca S si C sunt de tipul float, atunci rezultatul lor este un numar rational (de exemplu, daca S=16 si C=5 si ambele variabile sunt de tipul float, cu toate ca ele memoreaza valori intregi, S/C = 16/5 = 3,2). Acest lucru trebuia neaparat sa-l precizez, intrucat se poate gresi foarte usor la probleme de genul acesta.
Daca ai vreo nelamurire, nu ezita sa mi-o spui :)