Background

Olympiade belge d'Informatique

Concours de raisonnement informatique et d'initiation à la programmation pour élèves du secondaire.

S'entraîner sur les questions 2022

Un concours accessible à tous

Aucun prérequis

L'épreuve qualificative ne comporte pas de programmation, uniquement des exercices de raisonnement informatique ne nécessitant aucune connaissance préalable. La finale comporte, elle, de la programmation, via des codes à comprendre et à compléter sur papier.

Trois catégories d'âge

Le concours comporte trois catégories selon l'année de l'élève, chacune comportant son propre classement:

Cadet
2e secondaire et inférieur
Junior
3e et 4e secondaire
Senior
5e, 6e (et 7e) secondaire
Guidage

Les candidats passant l'épreuve qualificative se verront proposer une formation et une série d'outils leur permettant d'apprendre les bases de la programmation. Les meilleurs pourront également intégrer la formation de l'équipe nationale (beCP).

Inscrivez-vous aux qualifications !

Je représente une école, je souhaite inscrire mon école

Même après leur avoir parlé du concours votre école ne souhaite pas participer à la beOI ?
Inscrivez-vous individuellement pour passer l'épreuve dans l'un des centres près de chez vous.

image

Qualifications 2025

Lieu et date

La qualification a lieu la semaine du 3 au 7 février 2025 dans votre école (démarrage entre 8h00 et 15h30) ou le mercredi 5 février à 14h00 dans l'un des 11 centres régionaux. L'épreuve dure 75 minutes, vous ne pouvez la passer qu'une seule fois.

Types de questions

La qualification se déroulera sur ordinateur, sur la plate-forme habituelle.
Vous retrouverez ci-dessous quelques exemples de questions.

Visitez la plate-forme du concours afin de tester les tâches interactives de beOI.

Comment participer ?

Vous êtes une école? Inscrivez-vous en tant que coordinateur sur notre plate-forme de concours (administration).

Votre école ne souhaite pas participer? Inscrivez-vous dans l'un des centres régionaux via ce formulaire.

Calendrier 2024-2025

image

Finale 2025

Lieu et date

VUB Main Campus Etterbeek, Auditorium Q
Boulevard de la Plaine 2, 1050 Bruxelles.
Samedi 22 mars 2025

Types de questions

La finale se déroule sur papier. Vous pouvez consulter ci-dessous quelques exemples de questions et les questions des finales précédentes.

Eliminatoire: les 11 centres

Nous vous encourageons à, si possible, passer l'épreuve dans votre école.

Antwerpen

Universiteit Antwerpen
Campus Groenenborger, gebouw Z
Lokaal G.Z.423
Groenenborgerlaan 171
2020 Antwerpen
Instructions

Brussel / Bruxelles

VUB
VUB Campus Etterbeek
Local E.1.3 et E.1.4
Bd de la Plaine 2 / Pleinlaan 2
1050 Ixelles / 1050 Brussel
Instructions

Charleroi

UCLouvain
A6K (personne disponible à l'entrée)
Square des Martyrs, 1
6000 Charleroi

Gent

Universiteit Gent
Campus Sterre
PC / laptoplokaal 1.1 Grace Hopper
Krijgslaan 281 - Gebouw S5
9000 Gent

Hasselt

Universiteit Hasselt
Lokaal B17, Gebouw D
Agoralaan 1
Campus Diepenbeek
Hasselt
Instructions

Leuven

KU Leuven
KU Leuven Department of Computer Science
Room 00.124
Celestijnenlaan 200A
3001 Leuven
Instructions

Libramont

Haute École Robert Schuman (HERS)
Local B2
Rue de la Cité, 64
6800 Libramont
Instructions

Liège

Université de Liège
Locaux 1.132 et 1.99
Institut Montefiore (B28)
Allée de la découverte, 10
4000 Liège
Instructions

Louvain-la-Neuve

Université Catholique de Louvain
Salle Darwin
Bâtiment de Serres B-102
rue de la Croix du Sud
1348 Louvain-la-Neuve
Instructions

Mons

Université de Mons
Faculté des sciences
Salle Bertrand Russell (1er étage)
Bâtiment de Vinci-Mendeleïev
Avenue Victor Maistriau, 15
7000 Mons
Instructions

Namur

Université de Namur
Faculté d’informatique
Pool I35 (3ème étage)
Rue Grandgagnage, 21
5000 Namur
Instructions

Exemples de question pour la qualification

Exemples de question pour la finale

Le language informatique utilisé dans les questionnaires est un pseudo-code défini dans ce document.

  • Double 1

    Votre tâche est d’écrire une fonction qui double tous les “1” dans un tableau de n nombres. Par exemple, si le tableau contient [1,1,5,1,4]avant l’appel de la fonction,il devra contenir [1,1,1,1,5,1,1,4] après l’appelàcelle-ci. Pour simplifier les choses, le tableau qui vous est fourni a une taille 2n, ce qui permet de modifier le tableau sans devoir en créer un nouveau.

    Voici la définition des entrées et de la sortie de l’algorithme.

    Input : n, un nombre entier.
            tab, un tableau de nombres entiers de taille 2n.
    Output: tab est modifié pour que tous les 1 parmi les n premiers nombres du 
            tableau initial soient doublés. 
    

    Nous vous proposons deux algorithmes permettant de résoudre ce même problème, vous devez les compléter.

    Algorithme 1
    count <-- 0
    for (i <-- 0 to ... step 1)                // (a)
    {
      if (tab[...] = 1)                        // (b)
      {
        for (j <-- ... to i+1 step -1)         // (c)
        {
          tab[...] <-- tab[...]                // (d), (e)
        }
        count <-- count + 1
      }
    }
    

    Complétez (a), (b), (c), (d) et (e).

    Algorithme 2
    count <-- 0
    for (i <-- 0 to n-1 step 1)
    {
      if (tab[i] = 1) 
      {
        count <-- count + 1  
      }
    }
    for (j <-- ... to ... step ...)   // (f), (g), (h)
    {
      ...                             // (i)
      if (tab[j] = 1) 
      {
        tab[j+...] <-- 1              // (j)  
        count <-- count - 1
      }
    }
    

    Complétez (f), (g), (h), (i) et (j).

    En sachant que l’algorithme 1 prend environ 8 minutes pour s’exécuter sur un ordinateur moderne lorsque n vaut 1 000 000. Combien de temps ce même ordinateur prendra-t-il pour exécuter l’algorithme 2 ? 10 millisecondes, 4 minutes, 8 minutes, 15 minutes ou plusieurs jours ?

    Montrer/cacher la solution
  • Récursivité

    Vous avez peut-être appris les nombres de Fibonacci lors de vos leçons de mathématiques. Le 0-ième nombre de Fibonacci est 0, et le 1-er est 1. Pour tout n > 1, le n-ième nombre de Fibonacci est la somme du (n−1)-ième et (n−2)-ième nombres de Fibonacci. Les huit premiers nombres de Fibonacci sont donc 0, 1, 1, 2, 3, 5, 8, 13. Les nombres de Fibonacci peuvent être définis mathématiquement comme suit.

    Fib(0) = 0
    Fib(1) = 1
    Fib(n) = Fib(n-1) + Fib(n-2), pour n > 1
    

    C’est ce que l’on nomme une fonction récursive: la fonction Fib est définie en fonction d’elle-même. Dans un langage de programmation, il est facilement possible de transcrire une telle définition comme une fonction qui s’appelle elle-même:

    Input : n, un nombre naturel, pour lequel nous voulons calculer le nombre de Fibonacci
    Output : le n-ième nombre de Fibonacci
    
    Fib(n)
    {
      if (n = 0)
      {
        return 0
      }
      else if (n = 1) 
      {
        return 1
      }
      else
      {
        return Fib(n-1) + Fib(n-2)
      }
    }
    
    • Quel est le résultat de l’appel de fonction Fib(9) ?
    • Combien de fois la fonction Fib s’appelle-t-elle elle-même après l’appel à Fib(2) ?
    • Combien de fois la fonction Fib s’appelle-t-elle elle-même après l’appel à Fib(5) ?

    Des informaticiens malins ont trouvé une façon différente (et, espérons-le, meilleure) de calculer les nombres de Fibonacci. Nous pouvons l’exprimer dans un langage de programmation sous la forme de la fonction récursive BetterFib suivante:

    Input : n, un nombre entier positif, pour lequel nous voulons calculer le nombre de Fibonacci
            a, un nombre entier positif qui est initialement 0
            b, un nombre entier positif qui est initialement 1
            i, un nombre entier positif qui est initialement 0
    Output : le n-ième nombre de Fibonacci
    
    BetterFib(n, a, b, i) {
      if (i = n)
      {
        return a
      }
      else
      {
        return BetterFib(n, b, a+b, i+1)
      }
    }
    

    Pour calculer le n-ième nombre de Fibonacci, on appelle BetterFib(n,0,1,0). On comprend sans doute mieux le code ci-dessus quand on se rend compte que, lors de chaque appel à BetterFib, a contient toujours le i-ième nombre de Fibonacci, et b contient toujours le (i+1)-ième nombre de Fibonacci.

    • Combien de fois la fonction BetterFib s’appelle-t-elle elle-même après l’appel à BetterFib(2,0,1,0) ?
    • Combien de fois la fonction BetterFib s’appelle-t-elle elle-même après l’appel à BetterFib(5,0,1,0) ?
    Montrer/cacher la solution

Finale 2024

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
Dateien auf Deutsch
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
English Files
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2023

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
Dateien auf Deutsch
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
English Files
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2022

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
Dateien auf Deutsch
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
English Files
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2020

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
Dateien auf Deutsch
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
English Files
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2019

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions
Dateien auf Deutsch
Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2018

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2017

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Finale 2016

Cadet: Junior: Senior: Cadet: Solutions Junior: Solutions Senior: Solutions

Des questions ?

Contactez-nous !