# Super Marco Richiesta di aiuto

**URL:** <https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848>\
**Category:** Aiuto\
**Created:** [7 Maggio 2024, 11:30am UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848 "2024-05-07T11:30:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![j71399985](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j71399985](https://forum.olinfo.it/u/j71399985)\
**Post date:** [7 Maggio 2024, 11:30am UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848/1 "2024-05-07T11:30:41Z")

</div>

Non capisco se ho sbagliato codice o se c’è solo un’errore di input e output, metto qua il mio codice:  
#include \<stdio.h\>  
#include \<assert.h\>  
using namespace std;

int fact(int a) {  
int r=1;  
for(int i=a;i\>0;i–) {  
r\*=i;  
}  
return 0;  
}

double scosse(int N) {  
int k,a,b,c;  
double ans;  
k=fact(N);  
a=k/6;  
if(N==1||N==2||N==3) {  
switch(N) {  
case 1:  
ans=0;  
break;  
case 2:  
ans=0.5;  
break;  
case 3:  
ans=1.5;  
break;  
}  
}  
else {  
c=a_9+3_(a-1)\*a;  
ans=c/k;  
}  
return ans;  
}

int main() {  
FILE \*fr, \*fw;  
int N;

```
fr = fopen("input.txt", "r");
fw = fopen("output.txt", "w");
assert(1 == fscanf(fr, "%d", &N));
fprintf(fw, "%.6f\n", scosse(N));
fclose(fr);
fclose(fw);
return 0;

```

}

Però non tutti gli subtask erano sbagliati, ho preso 0 solo perchè “Execution killed (could be triggered by violating memory limits)” ma non è successo in tutti i casi, ho controllato e non ci sono errori di tempo o di memoria usato.

---

<div class="post-metadata">

**Author:** ![v.bizzarri](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/v/7c8e57/32.png) [@v.bizzarri](https://forum.olinfo.it/u/v.bizzarri)\
**Post date:** [7 Maggio 2024, 1:59pm UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848/2 "2024-05-07T13:59:46Z")

</div>

Non entro in merito alla logica del tuo codice però noto che la funzione fatt restituisce 0, forse dovrebbe restituire r, inoltre r è int e il fattoriale può essere un numero enorme!

---

<div class="post-metadata">

**Author:** ![j71399985](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j71399985](https://forum.olinfo.it/u/j71399985)\
**Post date:** [11 Giugno 2024, 7:38pm UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848/3 "2024-06-11T19:38:00Z")

</div>

Ho rifatto il codice ma nel subtask 2 riesco solo ad calcolare solo 2 dei testcase, ho rifatto il codice per i fattoriali e semplificato il codice in alcuni calcoli. Non capisco perché continuo ad avere risultati errati

```auto
#include <stdio.h>
#include <assert.h>

long long fact(int N) {
	if(N!=1) {
		return N*fact(N-1);
	}
	else {
		return 1;
	}
} 

double scosse(int N) {
	if(N==1) return 0;
	if(N==2) return 0.5;
	double ans;
    long long k;
    k=fact(N);
    k/=6;
    ans=1.5+0.5*(k-1);
    return ans;
}

int main() {
    FILE *fr, *fw;
    int N;

    fr = fopen("input.txt", "r");
    fw = fopen("output.txt", "w");
    assert(1 == fscanf(fr, "%d", &N));
    fprintf(fw, "%.6f\n", scosse(N));
    fclose(fr);
    fclose(fw);
    return 0;
}

```

---

<div class="post-metadata">

**Author:** ![qwfwq](https://forum.olinfo.it/user_avatar/forum.olinfo.it/qwfwq/32/2974_2.png) [@qwfwq](https://forum.olinfo.it/u/qwfwq)\
**Post date:** [12 Giugno 2024, 6:06am UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848/4 "2024-06-12T06:06:28Z")

</div>

Per N = 5 il codice restituisce 11.0 mentre il risultato corretto è 5.0;  
La soluzione passa per quanti confronti sono necessari per ordinare un vettore di 5 elementi nel caso migliore e nel caso peggiore.

---

<div class="post-metadata">

**Author:** ![j71399985](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j71399985](https://forum.olinfo.it/u/j71399985)\
**Post date:** [12 Giugno 2024, 9:10am UTC](https://forum.olinfo.it/t/super-marco-richiesta-di-aiuto/8848/5 "2024-06-12T09:10:38Z")

</div>

Già, ho capito che logicamente avevo capito sbagliato questo esercizio. Adesso l’ho rifatto con un’altro metodo e ho preso 100 su 100.  
Grazie a quelli che hanno risposto a questo argomento
