17108972589718074 1439528307936299026 080765545554532458183 43255130543516432376912 4663791911119657860822050 367340495642348613717749611 38104459104482535212494659899 5225079402598873366451131040234 240130493689852679573590918519290 66647636392705738600295487428650940 0535103538524596394743595531728001643 083783948745781956212836911156587085000 40781396853030778257813849856692950471963 5089328018573725755534194119396813233357487 709737509271413007324171020350516977549843435 61187933295519151457453789138048055187827977590 7750007855795139817496078270462761613125177420579 97170554688538703689036095806399241086011592997 020790226888203087101533653915806041722653430 0377642434651424325601245917031000886439794 86942002854170097571338930915447098888372 333024657251637441276280296188483408232 2723195014038951851520634322622612616 12431271509190879459978732133255390 601413833379281814639023615443036 2338368861798856260050552801204 22598617062894203619648023806 809643832836096000000000000 0000000000000000000000000 00000000000000000000000 000000000000000000000 0000000000000000000 00000000000000000 |
Questo è il fattoriale di un particolare numero intero N. È composto da 1073 cifre ed è stato
ottenuto con R in pochi secondi.
Chi nei primi decenni del XX secolo avesse predetto che pochi anni dopo (per la prima volta nel 1967) si sarebbe stati in grado
di scrivere cifra per cifra un tale fattoriale sarebbe stato deriso. Le cifre di questo fattoriale hanno la caratteristica di poter essere disposte in un esagono con lati formati da 17 cifre ciascuno. Modificando opportunamente il file allegato, trovando l'"N" giusto, prova ad ottenere la figura precedente. |
Quanto è presente nel file allegato: Dal testo del problema si capisce che nchar(z) deve essere 1073.
Possiamo fare le prove senza stampare la figura, controllando solo questo valore:
Generazione di figure simili è descritta qui. Vedi.
n = ...; y = 0;z = 1;j = 1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}
nchar(z)
# ...
n=1;k=16;h=17; { while(n<nchar(z)/2) {cat(char(" ",h),substr(z,n,n+k),"\n"); k=k+2;n=n+k-1;h=h-1};
k=k-2; h=h+1;while(n<nchar(z)) {cat(char(" ",h+1),substr(z,n,n+k-2),"\n"); k=k-2;n=n+k+1;h=h+1} }
17108972589718074
1439528307936299026
080765545554532458183
43255130543516432376912
4663791911119657860822050
367340495642348613717749611
38104459104482535212494659899
5225079402598873366451131040234
240130493689852679573590918519290
66647636392705738600295487428650940
0535103538524596394743595531728001643
083783948745781956212836911156587085000
40781396853030778257813849856692950471963
5089328018573725755534194119396813233357487
709737509271413007324171020350516977549843435
61187933295519151457453789138048055187827977590
7750007855795139817496078270462761613125177420579
97170554688538703689036095806399241086011592997
020790226888203087101533653915806041722653430
0377642434651424325601245917031000886439794
86942002854170097571338930915447098888372
333024657251637441276280296188483408232
2723195014038951851520634322622612616
12431271509190879459978732133255390
601413833379281814639023615443036
2338368861798856260050552801204
22598617062894203619648023806
809643832836096000000000000
0000000000000000000000000
00000000000000000000000
000000000000000000000
0000000000000000000
00000000000000000
n=100; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 158
n=200; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 375
n=300; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 615
n=400; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 869
n=450; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 1001
n=470; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 1054
n=475; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 1067
n=477; y=0; z=1; j=1; while(j<=n){y = add(y,1); z = pro(z,y); j=j+1}; nchar(z)
# 1073 OK
n=1;k=16;h=17; {while(n<nchar(z)/2) {cat(char(" ",h),substr(z,n,n+k),"\n"); k=k+2;n=n+k-1;h=h-1};
k=k-2; h=h+1;while(n<nchar(z)) {cat(char(" ",h+1),substr(z,n,n+k-2),"\n"); k=k-2;n=n+k+1;h=h+1}}
# Ottengo la figura richiesta!