Accueil > > > MEILLEURE MÉTHODE POUR CALCULER UN PUISSANCE
MEILLEURE MÉTHODE POUR CALCULER UN PUISSANCE
Information sur la source
Description
la méthode la plus naive pour calculer par ex: x^15 = x*...*x(14 operations) ---------- mieux: x * x = x2 x2 * x2 = x4 x4 * x4 = x8 x4 * x8 = x12 x12 * x2 = x14 x14 * x = x15(6 operations) ---------- n × n = n2 n2 × n = n3 n3 × n3 = n6 n6 × n6 = n12 n12 × n3 = n15 (5 operations) ce programme donne les enchainements possible pour la plus rapide méthode de calculer la puissance :)
Source
#include<iostream>
#include<set>
#include<queue>
#include<vector>
#define MAX 200
using namespace std;
int operations[MAX + 1] = {0};
// A tree struct
struct Tree
{
int Key, Level;
Tree * Parent;
vector<Tree* > children;
Tree(int Key, Tree* Parent)
{
this->Key = Key;
this->Parent = Parent;
if(Parent != NULL)
this->Level = Parent->Level + 1;
else
this->Level = 0;
}
};
// testing if all nodes are all computed
bool AllComputed()
{
for(int k = 1;k <= MAX;k++)
if(!operations[k])
return false;
return true;
}
// building tree with a given node and a range limit
void stacking(int n,Tree * T)
{
queue<Tree*> Q;
// using algorithm to parse a tree by levels
Q.push(T);
while (!Q.empty() && !AllComputed())
{
Tree * X = Q.front();
Q.pop();
Tree * Iterator = X;
int Value = X->Key;
//process node X
while(Iterator != NULL)
{
int TmpValue = Iterator->Key + Value;
if((!operations[TmpValue]|| operations[TmpValue]
== X->Level + 1)&& TmpValue <= n)
{
operations[TmpValue] = X->Level + 1;
(X->children).push_back(new Tree(TmpValue,X));
}
Iterator = Iterator->Parent;
}
int L = (int)(X->children).size();
for (int i = 0;i < L;++i)
{
Q.push((X->children)[i]);
}
}
}
void search(int k,Tree * T)
{
if(T->Key == k)
{
Tree * Iter = T;
set<int> S;
while (T != NULL)
{
S.insert(T->Key);
T = T->Parent;
}
for(set<int>::iterator iter = S.begin();;)
{
cout << *iter;
++iter;
if(iter != S.end())
cout << "->";
else
{
cout << endl;
break;
}
}
}
else
{
vector<Tree *> v = T->children;
int L = (int)v.size();
for(int i = 0;i < L;++i)
search(k,v[i]);
}
}
int main()
{
Tree * T = new Tree(1,NULL);
stacking(MAX,T);
int key;
cout << "if you want to know how to obtain minimum number of operations :" << endl;
cout << "enter a positive number or (0) to quit" << endl;
cin >> key;
while(key)
{
cout << operations[key] << endl;
search(key,T);
cin >> key;
}
return 0;
}
Historique
- 19 novembre 2007 18:44:46 :
- prochainement mise à jour
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Envoi rapide port série [ par spiritualys ]
Hello,J'ai besoin d'aide : je dois envoyer des messages sur un port série avec un temps bien précis (inférieur à 6 ms). Les commandes existantes en C
Turoriel Visual C++ pour extra débutant ;-) [ par 187bundy ]
Salut à tous !J'ai pas mal programmé en C et C++ sous DOS avec un compilateur borland cpp, mais j'ai arrêté depuis longtemps, et me voila maintenant a
tri rapide(quicksort)+tri par tas(heapsort)+simulation graphique [ par mersniyassine ]
mon stage d'ete comporte une simulation graphique du tri par tas et du tri rapide, je trouve une difficulté a gerer le code source,merci bien de me fo
Evenement trop rapide [ par larion ]
Bonjour,Imaginons que nous avons 2 événements, pour exemple :evenement1: WM_LBUTTONDOWN --> Action1evenement2: WM_LBUTTONUP --> Action2S
tri rapide (quicksort) et/ou tri par tas(heapsort) urgent [ par mersniyassine ]
je trouve une difficulté a simuler graphiquement en C ces 2 trisya t-il quelqu'un qui peut me fournir un code.c compilable sur Turbo C qui effectue u
topo rapide du C++ [ par ::seth ]
Bonjour je suis actuellement developpeur en php, flash et j'aimerai me mettre au C cependant j'ai une vision assez flou de ce qu'on peut faire avec a
affichage trop rapide [ par malik7934 ]
Hello,J'ai un prog qui affiche dans une editbox les calculs qu'il fait (verbose). J'emploie la méthode suivante: strcat((char*)verboseText,"TEXTE A A
gestion clavier SDL trop rapide !!! [ par _Jonathan ]
bonjour a tousj'ai créé un programme avec sdl/opengl mais la gestion du clavier(sdl) est beaucoup tro rapide.j'ai pourtant essayé avec SDL_KEYUP, mais
Liste plus rapide que vertex array [ par goutbouyo ]
Salut,Dans mon jeu opengl, au début j'utilisait une liste d'affichage.J'ai voulut améliorer les performances du jeu et j'ai donc remplacer la liste pa
a l'aide (rapide) [ par alphaone ]
j'ai une function qui remplace dans une chaine de caractere un mot par un autre.je voudrai, que quelqu'un qui me donne un script, qui ouvre un fichier
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
ERREUR DE POINTEURERREUR DE POINTEUR par africanwinners
Cliquez pour lire la suite par africanwinners CLISTCTRLCLISTCTRL par dorras7
Cliquez pour lire la suite par dorras7
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|