CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Exercice France-IOI, chapitre 2

Pseudo supprimé
Pseudo supprimé 05 novembre 2006 à 14:10:59

Et tant qu´on se trouve dnas l´optimisation sur les opéateurs, on peut signaler que les multiplications et les divisions entières d´entiers par des multiples de 2 sont plus rapides (beacoup) si on utilise des décalages.

25/4 equivalent à 25>>2
Décomposition (Sachant que le décalage fonctionne en une seule passe)
0d 25 = 0b11001
0b11001 >> 1
0b1100 >> 1
0b110 = 6

Je te laisse deviner comment on peut récupérer de façon très rapide le reste :p

dnob700
dnob700
Niveau 10
05 novembre 2006 à 15:57:02

sauf que ce n´est pas une optimisation.

N´importe quel compilo (même gcc) est capable de faire ça (remplacer un /2 par un >> 1). Par contre, si tu le fait à sa place ça risque de le troubler, et il pourrait ne pas faire de meilleurs optimisation qu´il aurait faite sinon (genre court-circuiter certaines étapes d´un calcul).

D´autre part, ça nuit à la lisibilité du code.

bref, il ne faut pas faire ça (sauf si ce que tu veux faire, c´est effectivement décaler les bits, et non pas diviser par deux).

Je crois que ce truc, c´est l´un des gros défauts du C, qui ne sépare pas assez les objets manipulés de leurs représentations mémoire (bien sûr, on peut aussi dire que c´est son avantage...).

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
05 novembre 2006 à 18:24:45

Effectivement je confirme, gcc utilise des décalages de bits pour les opérations modulo, suffit de faire un diff sur le code généré par un int a = 4 % 2 et a = 4 & 1...

Cedhulk
Cedhulk
Niveau 4
06 septembre 2015 à 12:29:05

Bonjour, moi j'ai un petit problème juste sur un exo du niveau 2 IOI (qui a l'air facile) mais je suis bloqué : http://www.france-ioi.org/algo/task.php?idChapter=595&idTask=0&sTab=task&iOrder=24
"La bataille"

Voici mon code :

  1. include <stdio.h>
  2. include <string.h>
  3. define repeat(nb) for(int _loop = 1, _max = (nb) ; _loop <= _max ; _loop++)

int main()
{

char nom1[1001];
char nom2[1001];

scanf("%[^\n]\n",nom1);
scanf("%[^\n]\n",nom2);

if ((strcmp(nom1, nom2) < 0) )
{
printf("1\n");
}
if ((strcmp(nom1, nom2) == 0))
{
printf("=\n");
}
if ((strcmp(nom1, nom2) > 0) )
{
printf("2\n");
}

/* if ((nom1[i]<=nom2[i]) )
{
printf("2\n");
}
if (((nom1[i]==nom2[i])))
{
printf("=\n");
}
if ((nom1[i]>=nom2[i]))
{
printf("1\n");
}*/

int i=-1;
while (nom1[i] == nom2[i])
{
i++;

if(nom1[i] != nom2[i])
{

printf("%d",i);
break;
}

}

}

Les tests 9 10 11 ne se valident pas...
J'espère recevoir de l'aide pour cet exo,je ne vois pas l'erreur

Message édité le 06 septembre 2015 à 12:30:08 par Cedhulk
Cedhulk
Cedhulk
Niveau 4
06 septembre 2015 à 14:52:53

:up:

Cedhulk
Cedhulk
Niveau 4
06 septembre 2015 à 21:56:52

:up:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment