diff --git a/ex1/main.c b/ex1/main.c
index cd15dcf95bc40ce50227af0318ffb5281534ab49..9a1d530de9725375d78d0c21f4678e4aa771ceb8 100644
--- a/ex1/main.c
+++ b/ex1/main.c
@@ -32,7 +32,7 @@ int main() {
         }
     }
     // Print the result and free the memory
-    printf("\ndistance : %d\n", distance);
+    printf("\ndistance: %d\n", distance);
 
     free(word1);
     free(word2);
diff --git a/ex3/main.c b/ex3/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..153989f5cd361ffbe93b02e8deb84f6899a8a67c
--- /dev/null
+++ b/ex3/main.c
@@ -0,0 +1,41 @@
+/* Author : Dario GENGA
+ * Date : 07.12.2021
+ * Description : ContrĂ´le continue 1 - Exercice 3
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#define ARRAY_SIZE 3
+
+int main() {
+    int value = 0;
+    int result = 0;
+    int money[ARRAY_SIZE] = {10, 2, 1};
+    scanf("%d", &value);
+
+    for (int i = 0; i < ARRAY_SIZE; i++) {
+        int sub_index = i;
+        int rest = value;
+        int quotient = value / money[i];
+
+        if (quotient > 0) {
+            for (int k = 1; k <= quotient; k++) {
+                while (rest != 0 && sub_index < ARRAY_SIZE) {
+                    int current_money = k * money[sub_index];
+                    rest = rest % current_money;
+                    sub_index++;
+                }
+
+                if (rest == 0) {
+                    result++;
+                    rest = value;
+                    sub_index = i;
+                }
+            }
+        }
+    }
+
+    printf("\n%d\n", result);
+
+    return EXIT_SUCCESS;
+}
diff --git a/ex3/makefile b/ex3/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a217aa28ef6b3524ffcef99d4b31e2d03e8b0cc4
--- /dev/null
+++ b/ex3/makefile
@@ -0,0 +1,10 @@
+LIB=-lm
+CC=gcc -Wall -Wextra -pedantic -g
+
+main: main.o
+	$(CC) $^ -fsanitize=address -fsanitize=leak -o $@ $(LIB)
+
+main.o: main.c
+	$(CC) -c $< $(LIB)
+clean:
+	rm -f *.o main
\ No newline at end of file