Autor Tema: Ejercicio de maraton :: Uncle Jack  (Leído 142 veces)

[D-m-K]

  • Administrador
  • Mensajes: 229
  • [-.|.-]
    • MSN Messenger - d4rk.m0nk3y@hotmail.com
    • Ver Perfil
    • Red Informatica Colombiana
    • Email
Ejercicio de maraton :: Uncle Jack
« : octubre 16, 2010, 12:23:50 pm »
Bueno aqui traigo otro ejercicio, esta vez el tio Jack con sus CD's y sos sobrinos mojigatos.

Cita
Problem F
Uncle Jack


Source file name: uj.c, uj.cpp or uj.java

Dear Uncle Jack is willing to give away some of his collectable CDs to his nephews. Among the
titles you can find very rare albums of Hard Rock, Classical Music, Reggae and much more;
each title is considered to be unique. Last week he was listening to one of his favorite songs,
Nobody
:: Todas las grandes cosas que se disfrutan son el producto de las pequeñas cosas que se logran ::

[D-m-K]

  • Administrador
  • Mensajes: 229
  • [-.|.-]
    • MSN Messenger - d4rk.m0nk3y@hotmail.com
    • Ver Perfil
    • Red Informatica Colombiana
    • Email
Re: Ejercicio de maraton :: Uncle Jack
« Respuesta #1 : octubre 16, 2010, 12:28:48 pm »
Aqui esta el code del problema.

Tiempo invertido : 18 mins.

Código: (java) [Seleccionar]
import java.io.*;
import java.util.*;
import java.math.BigInteger;


public class uj{
public static void main(String[] args) throws IOException{
//Objetos de lectura y escritura
BufferedReader file_in = new BufferedReader(new FileReader("uj.in"));
PrintWriter file_out = new PrintWriter(new FileWriter("uj.out"));
String linea = "";

//Lectura del archivo
while ( (linea = file_in.readLine()) != null){
StringTokenizer st = new StringTokenizer(linea," ");
int N = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
BigInteger r = new BigInteger(N + "").pow(D);
if (N == 0 && D == 0)
break;

file_out.println(r);
}
file_out.flush();
file_out.close();
}
}


Quizas el unico inconveniente que tuve fue que inicialmente trabaje las  potencias con long y para mi sorpresa habian resultados con mas de 19 digitos. Esto me lleva a concluir que en las maratones se tiene que usar mucho el objeto BigInteger y BigDecimal.

Esta es la salida

Archivo de salida uj.out
Cita
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
1
3
9
27
81
243
729
2187
6561
19683
59049
177147
531441
1594323
4782969
14348907
43046721
129140163
387420489
1162261467
3486784401
10460353203
31381059609
94143178827
282429536481
847288609443
1
4
16
64
256
1024
4096
16384
65536
262144
1048576
4194304
16777216
67108864
268435456
1073741824
4294967296
17179869184
68719476736
274877906944
1099511627776
4398046511104
17592186044416
70368744177664
281474976710656
1125899906842624
1
5
25
125
625
3125
15625
78125
390625
1953125
9765625
48828125
244140625
1220703125
6103515625
30517578125
152587890625
762939453125
3814697265625
19073486328125
95367431640625
476837158203125
2384185791015625
11920928955078125
59604644775390625
298023223876953125
1
6
36
216
1296
7776
46656
279936
1679616
10077696
60466176
362797056
2176782336
13060694016
78364164096
470184984576
2821109907456
16926659444736
101559956668416
609359740010496
3656158440062976
21936950640377856
131621703842267136
789730223053602816
4738381338321616896
28430288029929701376
1
7
49
343
2401
16807
117649
823543
5764801
40353607
282475249
1977326743
13841287201
96889010407
678223072849
4747561509943
33232930569601
232630513987207
1628413597910449
11398895185373143
79792266297612001
558545864083284007
3909821048582988049
27368747340080916343
191581231380566414401
1341068619663964900807
1
8
64
512
4096
32768
262144
2097152
16777216
134217728
1073741824
8589934592
68719476736
549755813888
4398046511104
35184372088832
281474976710656
2251799813685248
18014398509481984
144115188075855872
1152921504606846976
9223372036854775808
73786976294838206464
590295810358705651712
4722366482869645213696
37778931862957161709568
1
9
81
729
6561
59049
531441
4782969
43046721
387420489
3486784401
31381059609
282429536481
2541865828329
22876792454961
205891132094649
1853020188851841
16677181699666569
150094635296999121
1350851717672992089
12157665459056928801
109418989131512359209
984770902183611232881
8862938119652501095929
79766443076872509863361
717897987691852588770249
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
10000000000000
100000000000000
1000000000000000
10000000000000000
100000000000000000
1000000000000000000
10000000000000000000
100000000000000000000
1000000000000000000000
10000000000000000000000
100000000000000000000000
1000000000000000000000000
10000000000000000000000000

=)
« Última Modificación: octubre 16, 2010, 10:10:42 pm por [D-m-K] »
:: Todas las grandes cosas que se disfrutan son el producto de las pequeñas cosas que se logran ::