Étant donné trois nombres entiers positifs K, X, et Oui, la tâche consiste à trouver le nombre formé en soustrayant alternativement X et en ajoutant Oui à 0 le total K nombre de fois.
Exemples:
Saisir: X = 2, Y = 5, K = 3
Sortir: 1
Explication:
Voici les opérations effectuées K(= 3) nombre de fois sur 0 :
Opération 1 : Réduire la valeur 0 de X(= 2) la modifie en 0 – 2 = 2.
Opération 2 : Incrémenter la valeur -2 de Y(= 5) la modifie en -2 + 5 = 3.
Opération 3 : Réduire la valeur 3 de X(= 2) la modifie en 3 – 2 = 1.
La valeur obtenue après modification de la valeur est 1.
Saisir: X = 1, Y = 100, K = 4
Sortir: 198
Approche naïve : Le problème donné peut être résolu en effectuant les opérations données K nombre de fois et imprimer le résultat obtenu.
Complexité temporelle : D’ACCORD)
Espace auxiliaire : O(1)
Approche efficace : L’approche ci-dessus peut également être optimisée en trouvant la valeur totale qui est décrémentée (en utilisant la valeur de X) et incrémenté (en utilisant la valeur de Oui) dans K nombre de coups, puis imprimez la somme de ces valeurs comme résultat.
La valeur qui doit être ajoutée au résultat est calculée par :
ajouterY = Y*(K/2)
où, K/2 nombre de fois que l’opération d’addition est effectuée.
La valeur qui doit être soustraite au résultat est calculée par :
ajouterY = Y*(K/2 + K&1)
où, K/2 nombre de fois que l’opération de soustraction est effectuée si le nombre d’opération est impair, alors une soustraction supplémentaire est effectuée.
Vous trouverez ci-dessous la mise en œuvre de l’approche ci-dessus :
C++
#include en utilisant l’espace de noms std ; int positionAfterKJumps(int X, int Y, int K) { int addY = Y * (K / 2); int reduireX = -1 * X * (K / 2 + K % 2); retourner ajouterY + réduireX; } int main() { entier X = 2, Y = 5, K = 3; cout << positionAprèsKSauts(X, Y, K); renvoie 0 ; } |
Complexité temporelle : O(1)
Espace auxiliaire : O(1)
Attention lecteur ! N’arrêtez pas d’apprendre maintenant. Obtenez tous les concepts importants de DSA avec le Cours auto-rythmé DSA à un prix adapté aux étudiants et devenez prêt pour l’industrie. Pour compléter votre préparation de l’apprentissage d’une langue à DS Algo et bien d’autres, veuillez vous référer Cours complet de préparation aux entretiens.
Au cas où vous souhaiteriez assister cours en direct avec des experts, veuillez vous référer Cours en direct DSA pour les professionnels en activité et Programmation compétitive en direct pour les étudiants.