Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

ultima cifra a sumei 2^a+3^a+...+9^a

Creat de Ayumi, Decembrie 18, 2011, 02:04:34 PM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

Ayumi

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;
}

zec


Ayumi

Citat din: zec din Decembrie 18, 2011, 05:19:14 PM
Pai p=1 ramane mereu asa.
p ramane 1 ? De ce? Nu se va efectua produsul p = p*n ?

Quantum

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

Citat din: Quantum din Decembrie 18, 2011, 05:37:27 PM
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...  :(

Quantum

Citat din: Ayumi din Decembrie 18, 2011, 05:58:01 PM
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.

Quantum

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

De ce ati mai pus "cin >> a" dupa  "cout << s%10 " ?

Quantum

Citat din: Ayumi din Decembrie 18, 2011, 07:11:14 PM
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

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

Quantum

Citat din: Ayumi din Decembrie 18, 2011, 08:01:24 PM
[...] 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;
}