•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« : Aprilie 01, 2013, 16:39:16 » |
|
Salut! Aveti idee ce gresesc aici? Problema zice asa: sa se gaseasca un numar n pentru care n^n are n cifre. #include<stdio.h> #include<conio.h> #include<math.h> void main(){ int n,k,cifnn=0; long int nn; k=1;n=1; while(k){ nn=pow(n,n); while(nn%10){ //calculez numarul cifrelor lui n^n cifnn++; nn=nn/10; } if(cifnn==n){ printf("%d",n); k=0; } n++; } getch(); }
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #1 : Aprilie 01, 2013, 16:53:04 » |
|
Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi.
|
|
|
Memorat
|
Am zis
|
|
|
•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« Răspunde #2 : Aprilie 01, 2013, 17:02:56 » |
|
Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi. Nu inteleg ce vrei sa zici. Am incercat si sa modific valoarea initiala a lui n, dar tot tampenii imi afiseaza.
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #3 : Aprilie 01, 2013, 17:13:03 » |
|
Ideea e ca 1 este un numar pentru care 1^1 = 1 are 1 cifra. Deci nu e nevoie de un program ca sa rezolvi problema.
|
|
|
Memorat
|
Am zis
|
|
|
•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« Răspunde #4 : Aprilie 01, 2013, 17:32:36 » |
|
ok, dar de ce nu functioneaza pentru valori mai mari decat 1?
|
|
|
Memorat
|
|
|
|
•deneo
|
|
« Răspunde #5 : Aprilie 01, 2013, 19:52:56 » |
|
trebuie ca la fiecare iteratie sa resetezi cifnn la 0. conditia la while trebuie sa fie nn != 0, nu ultima lui cifra sa fie diferita de 0. fericit?
|
|
|
Memorat
|
|
|
|
•darkseeker
|
|
« Răspunde #6 : Aprilie 01, 2013, 21:08:35 » |
|
@crash
Numarul e cifre al unui numar n este [ lg (n) ] + 1 . Numarul de cifre al lui n ^ n = [ n lg (n) ] + 1 . Pt n >= 10 , lg (n) >=1 => [ n lg(n) ] >= n => numarul de cifre al lui n ^ n >= n + 1 . Pentru numerele de la 2 la 10 este observabil foarte usor . Asta daca vrei ceva cat de cat riguros, dar se observa destul de usor ca 1 e singura solutie.
|
|
|
Memorat
|
|
|
|
•romyk
Strain
Karma: 5
Deconectat
Mesaje: 40
|
|
« Răspunde #7 : Aprilie 02, 2013, 09:51:51 » |
|
pe langa 1 mai sunt solutiile 8, 9 si 19, mai mari nu gaseste ca depaseste long long...
|
|
|
Memorat
|
|
|
|
•toni2007
|
|
« Răspunde #8 : Aprilie 02, 2013, 10:06:20 » |
|
print [x for x in xrange(20) if len(str(x**x)) == x]
|
|
|
Memorat
|
|
|
|
•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« Răspunde #9 : Aprilie 02, 2013, 15:04:45 » |
|
trebuie ca la fiecare iteratie sa resetezi cifnn la 0. conditia la while trebuie sa fie nn != 0, nu ultima lui cifra sa fie diferita de 0. fericit? omg! initializarea lui cifnn era problema! conditia de la while e ok. multumesc!
|
|
|
Memorat
|
|
|
|
•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« Răspunde #10 : Aprilie 02, 2013, 15:08:14 » |
|
@darkseeker: am modificat valoarea initiala astfel incat sa nu mai porneasca de la 1. @romyk: avand in vedere ca cere sa afiseze un numar care sa indeplineasca acea conditie e ok sa il gaseasca pe cel mai mic: 8. @toni2007: m-ai pierdut ... Multumesc tuturor!
|
|
|
Memorat
|
|
|
|
•deneo
|
|
« Răspunde #11 : Aprilie 02, 2013, 16:56:20 » |
|
trebuie ca la fiecare iteratie sa resetezi cifnn la 0. conditia la while trebuie sa fie nn != 0, nu ultima lui cifra sa fie diferita de 0. fericit? omg! initializarea lui cifnn era problema! conditia de la while e ok. multumesc! te inseli. daca nn = 100, practic while-ul tau se opreste la prima cifra.
|
|
|
Memorat
|
|
|
|
•crash
Strain
Karma: -1
Deconectat
Mesaje: 10
|
|
« Răspunde #12 : Aprilie 02, 2013, 17:02:36 » |
|
trebuie ca la fiecare iteratie sa resetezi cifnn la 0. conditia la while trebuie sa fie nn != 0, nu ultima lui cifra sa fie diferita de 0. fericit? omg! initializarea lui cifnn era problema! conditia de la while e ok. multumesc! te inseli. daca nn = 100, practic while-ul tau se opreste la prima cifra. pfff ... ai dreptate! nu m-am gandit.
|
|
|
Memorat
|
|
|
|
|