Welcome, Guest. Please login or register.

Autor Subiect: ultima cifra a sumei 2^a+3^a+...+9^a  (Citit de 7552 ori)

0 Membri şi 1 Vizitator vizualizează acest subiect.

Ayumi

  • Vizitator
ultima cifra a sumei 2^a+3^a+...+9^a
« : Decembrie 18, 2011, 02:04:34 p.m. »
Buna ziua !
As dori sa imi spuneti ce este gresit in programul meu,pentru ca nu merge.Ce nu este bine ? Ca sa stiu sa indrept greseala...
//Problema 31.31. Ultima cifra a sumei 2^a+3^a+….+9^a fara a efectua suma. De ex pentru a=2379 ultima cifra este 4.-->Ma scuzati,aici era 2^a + 3^a+... ,nu cum am scris eu prima oara 2a+3a
#include <iostream>
using namespace std;

int main()
{
int a,n,i,p = 1,uc,s = 0;
cout << "a = ";
cin >> a;
if (a == 0) cout << "Ultima cifra a sumei este 8. " << endl;

for (n = 2;n <= 9;n++) {
for (i = 1;i <= n;i++) {
p = p*n;
uc = p%10;
p = p%10;
}
         s = s+uc;
}
cout << s << endl;
return 0;
}
« Ultima Modificare: Decembrie 18, 2011, 05:51:49 p.m. de Ayumi »

Offline zec

  • Experimentat
  • ***
  • Mesaje postate: 504
  • Popularitate: +49/-15
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #1 : Decembrie 18, 2011, 05:19:14 p.m. »
Pai p=1 ramane mereu asa.

Ayumi

  • Vizitator
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #2 : Decembrie 18, 2011, 05:21:32 p.m. »
Pai p=1 ramane mereu asa.
p ramane 1 ? De ce? Nu se va efectua produsul p = p*n ?

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #3 : Decembrie 18, 2011, 05:37:27 p.m. »
Nu stiu daca am inteles problema corect dar eu am facut asa. Totusi la cazul particular indicat imi da cifra 6 si nu 4.
//Problema 31.31. Ultima cifra a sumei 2a+3a+….+9a fara a efectua suma. De ex pentru a=2379 ultima cifra este 4.
#include <iostream>
using namespace std;

int main()
{
int a,n,s = 0;
cout << "a = ";
cin >> a;

for (n = 2;n <= 9;n++) {
s = s+n;
}
 
    cout << (s*a)%10 << endl;
return 0;
}

Ayumi

  • Vizitator
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #4 : Decembrie 18, 2011, 05:58:01 p.m. »
Nu stiu daca am inteles problema corect dar eu am facut asa. Totusi la cazul particular indicat imi da cifra 6 si nu 4.
//Problema 31.31. Ultima cifra a sumei 2a+3a+….+9a fara a efectua suma. De ex pentru a=2379 ultima cifra este 4.
#include <iostream>
using namespace std;

int main()
{
int a,n,s = 0;
cout << "a = ";
cin >> a;

for (n = 2;n <= 9;n++) {
s = s+n;
}
 
    cout << (s*a)%10 << endl;
return 0;
}
Nu,este corect ce ati scris dumneavoastra,dar este vina mea.Voiam sa spun(ca si in titlu) ultima cifra a sumei 2^a + 3^a...+9^a,nu ceea ce scrisesem anterior,adica 2*a + 3*a +...+9*a. Dumneavoastra l-ati scris pentru ce am spus anterior(2a+3a+...+9a).
Este greseala mea,am scris in titlu bine,dar nu mi-am dat seama ca am facut greseala in comentariu...  :(

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #5 : Decembrie 18, 2011, 06:27:58 p.m. »
Nu,este corect ce ati scris dumneavoastra,dar este vina mea.
Nici o problema. M-am gandit ca trebuie sa fie ceva diferit dar nu mi-a picat fisa.

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #6 : Decembrie 18, 2011, 07:02:27 p.m. »
OK, cred ca asta merge:
//Problema 31.31. Ultima cifra a sumei 2^a+3^a+….+9^a fara a efectua suma. De ex pentru a=2379 ultima cifra este 4.-->Ma scuzati,aici era 2^a + 3^a+... ,nu cum am scris eu prima oara 2a+3a
#include <iostream>
using namespace std;

int main()
{
long a,n,i,p = 1,uc,s = 0;
cout << "a = ";
cin >> a;
if (a == 0) cout << "Ultima cifra a sumei este 8. " << endl;
else {

    for (n = 2;n <= 9;n++) {
for (i = 1;i <= a;i++) {
    p = p*n;
    p = p%10;
    }
uc = p%10;
    s = s+uc;
    p=1;
}
cout << s%10 << endl;
cin >> a;
}
return 0;
}

Ayumi

  • Vizitator
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #7 : Decembrie 18, 2011, 07:11:14 p.m. »
De ce ati mai pus "cin >> a" dupa  "cout << s%10 " ?

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #8 : Decembrie 18, 2011, 07:18:40 p.m. »
De ce ati mai pus "cin >> a" dupa  "cout << s%10 " ?
Nu e nevoie de el, poti sa-l scoti. L-am uitat in timp ce editam codul (avea doar functia de a astepta un pic).

Ayumi

  • Vizitator
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #9 : Decembrie 18, 2011, 08:01:24 p.m. »
Da,merge foarte bine.Va multumesc mult,dar else-ul era necesar? Si de ce l-ati facut pe p = 1 in interiorul celui de-al doilea for?
Mi-am dat seama,totusi,ca daca il initializati la inceput pe p cu 1,acolo unde ati declarat variabilele,produsul s-ar fif modificat si nu ar fi calculat bine.In loc sa se faca p = 1 de fiecare data cand intra in for,el ar fi ramas la valoarea obtinuta anterior si nu ar fi fost bine....

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: ultima cifra a sumei 2^a+3^a+...+9^a
« Răspuns #10 : Decembrie 18, 2011, 10:32:22 p.m. »
[...] dar else-ul era necesar?
Da  (in cazul in care vrei sa pastrezi "if"-ul initial), astfel intregul bloc "else" se executa numai cand a != 0.
Fara "else" in cazul a == 0 s-ar executa si "if"-ul si tot ce urmeaza dupa el deci ar afisa rezultatul de doua ori.
Alternativ ai putea elimina si "if"-ul si "else"-ul si sa lasi numai codul din "else" si pentru cazul a ==0 (functioneaza pentru ca "p" este intodeauna 1 si se aduna de 8 ori din moment ce "for"-ul interior nu se mai executa).
//Problema 31.31. Ultima cifra a sumei 2^a+3^a+….+9^a fara a efectua suma. De ex pentru a=2379 ultima cifra este 4.-->Ma scuzati,aici era 2^a + 3^a+... ,nu cum am scris eu prima oara 2a+3a
#include <iostream>
using namespace std;

int main()
{
    long a,n,i,p = 1,uc,s = 0;
    cout << "a = ";
    cin >> a;
    for (n = 2;n <= 9;n++) {
    for (i = 1;i <= a;i++) {
    p = p*n;
    p = p%10;
    }
    uc = p%10;
    s = s+uc;
    p = 1;
    }
    cout << s%10 << endl;
    return 0;
}