Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: n pt care n^n are n cifre  (Citit de 3392 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
crash
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« : 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.
Cod:
#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
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #1 : Aprilie 01, 2013, 16:53:04 »

Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi. Tongue

Cod:
printf("%d\n", 1);
Memorat

Am zis Mr. Green
crash
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #2 : Aprilie 01, 2013, 17:02:56 »

Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi. Tongue

Cod:
printf("%d\n", 1);

Nu inteleg ce vrei sa zici. Am incercat si sa modific valoarea initiala a lui n, dar tot tampenii imi afiseaza.
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« 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. Smile
Memorat

Am zis Mr. Green
crash
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #4 : Aprilie 01, 2013, 17:32:36 »

ok, dar de ce nu functioneaza pentru valori mai mari decat 1?
Memorat
deneo
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« 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?  Smile
Memorat
darkseeker
De-al casei
***

Karma: 29
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« 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 Deconectat

Mesaje: 40



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #8 : Aprilie 02, 2013, 10:06:20 »

Cod:
print [x for x in xrange(20) if len(str(x**x)) == x]
Memorat
crash
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« 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?  Smile

omg! initializarea lui cifnn era problema! conditia de la while e ok. multumesc!
Memorat
crash
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« 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
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« 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?  Smile

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 Deconectat

Mesaje: 10



Vezi Profilul
« 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?  Smile

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. Sad
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines