Maison > développement back-end > C++ > Le plus petit nombre trigonométrique supérieur à p

Le plus petit nombre trigonométrique supérieur à p

王林
Libérer: 2023-09-20 19:13:02
avant
1262 Les gens l'ont consulté

Le plus petit nombre trigonométrique supérieur à p

Nous discuterons des nombres triangulaires et de la façon de trouver le plus petit nombre triangulaire qui est seulement supérieur au nombre donné "num". Discutons d'abord de ce que sont les nombres trigonométriques, puis trouvons le plus petit nombre trigonométrique supérieur à « num »

Nous verrons deux approches différentes du même problème. Dans la première méthode, nous exécuterons une boucle simple pour générer la sortie, tandis que dans la deuxième méthode, nous générerons d'abord une formule générale pour calculer le nombre requis, puis appliquerons directement cette formule pour obtenir le nombre minimum de Triangle. p>

Énoncé du problème

Nous devons trouver le plus petit nombre de triangles qui soit seulement plus grand que "num".

Nous avons plusieurs boîtes avec des balles. Le nombre de balles que contient la boîte est un nombre triangulaire différent pour toutes les boîtes. Les cases sont numérotées de 1 à n. Nous devons découvrir quelle boîte contiendra le nombre minimum de balles après avoir retiré "num" balles de la boîte.

Comprenons cela à travers un exemple

Input number was: num = 5
Copier après la connexion

Nous devons découvrir quelle boîte contient le moins de balles après avoir retiré 5 balles

Output:3rd box will contain a minimum of balls after removing 4 balls.
Copier après la connexion

Solution pour cet exemple -

Boxes with number of balls: {1 3 6 10 ....}
Box 3 will contain only 1 ball after removing 4 balls from it.
Copier après la connexion

Que sont les nombres trigonométriques ?

Les nombres triangulaires sont des nombres qui peuvent être représentés sous la forme d'une grille triangulaire équilatérale. Le nombre de points dans une ligne est toujours égal au numéro de ligne, c'est-à-dire que la première ligne contiendra 1 point, la deuxième ligne contiendra 2 points, et ainsi de suite. Plusieurs nombres triangulaires sont : 1, 3, 6, 10, 15…. Dérivons maintenant la formule du nième nombre triangulaire -

Nous savons que la nième ligne d'un nombre triangulaire contient n points, le nombre triangulaire peut donc être exprimé comme la somme des points de chaque ligne. Nous savons également que le nième nombre trigonométrique a n lignes, donc le nième nombre trigonométrique peut être donné par la somme des n premiers nombres naturels.

Méthode 1 : (Méthode directe)

Dans cette méthode, nous allons exécuter une boucle et calculer la différence entre le nombre donné et le nième nombre trigonométrique, lorsque nous obtiendrons la différence >= 0, nous obtiendrons le numéro de case requis donc nous tronquerons la boucle. < /p>

Pour les nombres trigonométriques, nous continuerons d'ajouter n au (n-1)ème nombre trigonométrique existant pour calculer la valeur du nombre trigonométrique suivant.

Algorithme

  • Étape 1 - Initialisez la variable triangulaire_number à 0.

  • Étape 2 - Exécutez la boucle for et continuez à ajouter n pour chaque itération.

  • Étape 3 - Continuez à calculer la différence entre le numéro du triangle et le nombre donné "num".

  • Étape 4 - Lorsque nous obtenons la différence >=0, nous imprimerons n comme numéro de boîte souhaité.

Exemple

L'implémentation de cette méthode en C++ est la suivante -

#include <iostream>
using namespace std;
int main(){
   int num = 1234;
   int triangular_number = 0;
   for (int n=1; triangular_number<=num; n++){
      triangular_number = triangular_number + n;
      if((triangular_number-num)>=0){
         cout<<"The smallest triangular number larger than "<<num<<" is "<<n;
         return 0;
      }
   }
}
Copier après la connexion

Sortie

The smallest triangular number larger than 1234 is 50
Copier après la connexion
Copier après la connexion

Méthode 2 : Méthode basée sur une formule

Dans cette méthode, nous générons d'abord une formule générale pour calculer le nombre requis, puis appliquons directement la formule pour obtenir le plus petit nombre de triangles qui est seulement supérieur au nombre donné.

Le numéro triangulaire du nième numéro de case est donné par -

Triangular number = (n*(n+1))/2
Copier après la connexion

Obtenez le plus petit numéro de case "n" tel que le nombre de triangles >= num.

i.e. (n*(n+1))/2 >= num
Copier après la connexion

Cela signifie que nous devons résoudre -

n<sup>2</sup> + n – 2*num >= 0
Copier après la connexion

En utilisant cette équation, nous obtenons

n = ceil( (sqrt(8*num+1)-1)/2 )
Copier après la connexion

Exemple

Le code de cette méthode est donné ci-dessous -

#include<bits/stdc++.h>
using namespace std;
int boxnum(int num){
   return ceil( ( sqrt( 8*num + 1 ) -1 ) / 2 ) ;
}
int main(){
   int num = 1234 ;
   cout << "The smallest triangular number larger than "<<num<<" is "<<boxnum(num);
   return 0;
}
Copier après la connexion

Sortie

The smallest triangular number larger than 1234 is 50
Copier après la connexion
Copier après la connexion

Complexité temporelle de cette méthode - O(logn)

Complexité spatiale - O(1) puisque nous n'utilisons que de l'espace supplémentaire constant.

Dans cet article, nous avons discuté de deux méthodes différentes pour trouver le plus petit nombre de triangles qui est seulement supérieur à un nombre "num" donné. La première méthode calcule simplement les nombres trigonométriques en exécutant une boucle et en ajoutant n pour chaque itération. Nous avons également calculé la différence entre le nombre donné et le nombre trigonométrique. Dans la deuxième approche, nous générons une formule mathématique pour calculer le résultat souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal