infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: crash sky din Aprilie 01, 2013, 16:39:16



Titlul: n pt care n^n are n cifre
Scris de: crash sky din 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();
}


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Paul-Dan Baltescu din Aprilie 01, 2013, 16:53:04
Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi. :P

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


Titlul: Răspuns: Răspuns: n pt care n^n are n cifre
Scris de: crash sky din Aprilie 01, 2013, 17:02:56
Nu te-ai gandit suficient la cerinta inainte sa te apuci sa implementezi. :P

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.


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Paul-Dan Baltescu din 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. :)


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: crash sky din Aprilie 01, 2013, 17:32:36
ok, dar de ce nu functioneaza pentru valori mai mari decat 1?


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Adrian Craciun din 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?  :)


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Boaca Cosmin din 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.


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Prehari Romica din Aprilie 02, 2013, 09:51:51
pe langa 1 mai sunt solutiile 8, 9 si 19, mai mari nu gaseste ca depaseste long long...


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Pripoae Teodor Anton din Aprilie 02, 2013, 10:06:20
Cod:
print [x for x in xrange(20) if len(str(x**x)) == x]


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: crash sky din 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!


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: crash sky din 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!


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: Adrian Craciun din 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.


Titlul: Răspuns: n pt care n^n are n cifre
Scris de: crash sky din 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. :(