Table des matières
Algorithme pour trouver le sous-tableau le plus long avec un GCD supérieur à 1
Syntaxe pour trouver le sous-tableau le plus long dont le GCD est supérieur à 1
Méthode :
Programme C++ pour trouver des sous-tableaux avec le diviseur commun le plus long supérieur à 1 en utilisant la méthode naïve
Exemple 2
Sortie
Programme C++ pour trouver le plus grand diviseur commun d'un tableau supérieur à 1
Conclusion
Maison développement back-end C++ Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1

Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1

Sep 18, 2023 pm 10:17 PM
最大公约数 sous-tableau

Le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1

Un tableau est une collection de données similaires stockées dans des emplacements de mémoire adjacents de manière contiguë. En définissant la valeur de décalage comme valeur de base spécifique pour la base de données, il est plus facile d'évaluer la position spécifique de chaque élément. La valeur de base de cet index particulier est zéro et la valeur de décalage est la différence entre les deux indices particuliers. Un sous-tableau fait partie d'un tableau spécifique et peut être défini comme un ensemble de variables, étiquetées avec plusieurs valeurs. Le sous-tableau le plus long fait référence à un tableau dans lequel tous les éléments du tableau sont supérieurs à K. La somme du sous-tableau de somme maximale ici est -

  • Moins de

  • dans un ensemble de données donné
  • est égal à l'ensemble de données donné.

  • Moins de

  • dans un ensemble de données donné

Pour trouver la longueur du sous-tableau le plus long, il nous suffit de trouver le nombre total de 1 dans le sous-tableau spécifique. REMARQUE : Le nombre doit être supérieur au nombre de zéro. Le plus grand diviseur commun est un phénomène mathématique dans lequel on trouve la plus grande valeur entière pouvant diviser chacun des entiers d'entrée avec un reste nul. La condition ici est que « le plus grand diviseur commun soit supérieur à 1 ». Cela signifie que ce nombre particulier n'a ici qu'au moins un diviseur commun entre les entrées données.

Input (array) : arr[] = {4, 3, 2, 2}
Output (after the process with sub-array operation) : 2
If we consider the subarray as {2, 2}, then we will get 2 as GCD. Which is > 1, is of maximum length.
Copier après la connexion

Aujourd'hui, dans cet article, nous allons apprendre à trouver le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 à l'aide de l'environnement de programmation C++.

Algorithme pour trouver le sous-tableau le plus long avec un GCD supérieur à 1

Dans cet algorithme particulier, nous pouvons trouver la plus grande valeur commune du sous-tableau le plus long contenant supérieur à 1.

  • Première étape : commencez.

  • Étape 2 - Déclarez les variables du processus.

  • Étape 3 - Réglez et initialisez-le à la valeur zéro.

  • Étape 4 - Créez une fonction pour évaluer la longueur maximale de ce sous-tableau.

  • Étape 5 - Incluez un vecteur comme argument.

  • Étape 6 - Créez une variable pour obtenir la réponse.

  • Étape 7 - Réglez et initialisez-le à la valeur zéro.

  • Étape 8 - Stockez la valeur du sous-tableau le plus long avec GCD > 1 valeur.

  • Étape 9 - Parcourez la boucle pour trouver le plus grand diviseur commun de chaque sous-tableau.

  • Étape 10 - Remplacez la réponse par la valeur de longueur du sous-tableau.

  • Étape 11 - Si le plus grand diviseur commun des sous-tableaux est supérieur à 1, enregistrez la réponse.

  • Étape 12 - Renvoyez la réponse.

  • Étape 13 - Sinon, exécutez à nouveau la boucle et itérez.

  • Étape 14 - Terminez une fois le processus terminé.

Syntaxe pour trouver le sous-tableau le plus long dont le GCD est supérieur à 1

int n;
cin >> n;

const int MAX_NUM = 100 * 1000;
static int dp[MAX_NUM];

for(int i = 0; i < n; ++i){
   int x;
   cin >> x;

   int cur = 1;
   vector<int> d;
   for(int i = 2; i * i <= x; ++i){
      if(x % i == 0){
         cur = max(cur, dp[i] + 1);
         cur = max(cur, dp[x / i] + 1);
         d.push_back(i);
         d.push_back(x / i);
      }
   }
   if(x > 1){
      cur = max(cur, dp[x] + 1);
      d.push_back(x);
   }

    for(int j : d){
      dp[j] = cur;
   }
}
cout << *max_element(dp, dp + MAX_NUM) << endl;
Copier après la connexion

En suivant l'algorithme ci-dessus, nous avons écrit ici la syntaxe possible pour trouver la valeur GCD avec le sous-tableau le plus long supérieur à 1.

Méthode :

  • Méthode 1−Programme C++ pour trouver le sous-tableau le plus long dont le plus grand diviseur commun est supérieur à 1 grâce à la méthode naïve.

  • Méthode 2 - Programme C++ pour trouver le plus grand diviseur commun d'un tableau supérieur à 1.

Programme C++ pour trouver des sous-tableaux avec le diviseur commun le plus long supérieur à 1 en utilisant la méthode naïve

Dans ce code C++, nous adoptons une approche naïve pour trouver la valeur GCD du sous-tableau le plus long supérieur à 1 en générant tous les sous-tableaux possibles du tableau donné.

La traduction chinoise de

Exemple 1

est :

Exemple 1

#include <bits/stdc++.h>
using namespace std;
void maxSubarrayLen(int arr[], int n) {
	int maxLen = 0;
	for (int i = 0; i < n; i++) {
		int gcd = 0;
		for (int j = i; j < n; j++) {
			gcd = __gcd(gcd, arr[j]);
			if (gcd > 1)
				maxLen = max(maxLen, j - i + 1);
			else
			   break;
		}
	}
	cout << maxLen;
}
int main() {
	int arr[] = { 410, 16, 7, 180, 222, 10, 33 };
	int N = sizeof(arr) / sizeof(int);
	maxSubarrayLen(arr, N);

	return 0;
}
Copier après la connexion

Sortie

3
Copier après la connexion

Programme C++ pour trouver le plus grand diviseur commun d'un tableau supérieur à 1

Dans ce code C++, nous essayons de calculer le plus grand diviseur commun et il a la capacité de vérifier s'il est supérieur à 1.

Exemple 2

se traduit par :

Exemple 2

#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){
   if (a == 0)
      return b;
   return gcd(b%a, a);
}
void bestArray(int arr[], int n){
   bool even[n] = {false};
   int ans = 0;
   for(int i = 0; i < n; i++){
      ans = gcd(ans, arr[i]);
      if(arr[i] % 2 == 0)
         even[i] = true;
   }
   if(ans > 1)
      cout << 0 << endl;
   else {
      ans = 0;
      for(int i = 0; i < n-1; i++){
         if(!even[i]){
            even[i] = true;
            even[i+1] = true;
            if(arr[i+1]%2 != 0){
               ans+=1;
            }
            else
               ans+=2;
         }
      }
      if(!even[n-1]){
         ans+=2;
      }
      cout << ans << endl;
   }
}
int main(){
   int arr[] = {16, 10, 07, 81, 88, 32, 3, 42, 25};
   int n = 9;
   bestArray(arr, n);

   int arr1[] = {16, 7};
   n = 2;
   bestArray(arr1, n);

   int arr2[] = {10, 97, 2001};
   n = 3;
   bestArray(arr2, n);
}
Copier après la connexion

Sortie

5
2
1
Copier après la connexion

Conclusion

Grâce à cette discussion, nous pouvons découvrir comment trouver le sous-tableau le plus long dont le GCD est supérieur à 1. Espérons que l'algorithme et le code C++ écrits vous montreront clairement comment ce processus fonctionne dans le monde réel.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quels sont les avantages et les inconvénients de la définition des macros de fonctions C++ ? Quels sont les avantages et les inconvénients de la définition des macros de fonctions C++ ? Apr 11, 2024 pm 04:54 PM

Bien que la définition de macros de fonctions puisse simplifier le code et améliorer les performances, elle présente également des inconvénients : insécurité des types, difficultés de débogage, conflits de noms et redondance du code. Après avoir pesé le pour et le contre, il est crucial de prendre des décisions éclairées lors de l’utilisation des macros de fonctions.

Explication détaillée de la façon d'utiliser le langage C pour trouver le plus grand diviseur commun Explication détaillée de la façon d'utiliser le langage C pour trouver le plus grand diviseur commun Feb 18, 2024 pm 11:10 PM

Explication détaillée de la méthode de recherche du plus grand diviseur commun en langage C Le plus grand diviseur commun (PGCD, Greatest Common Divisor) est un concept couramment utilisé en mathématiques, qui fait référence au plus grand diviseur parmi plusieurs entiers. En langage C, nous pouvons utiliser de nombreuses méthodes pour trouver le plus grand diviseur commun. Cet article détaillera plusieurs de ces méthodes courantes et fournira des exemples de code spécifiques. Méthode 1 : La division euclidienne est une méthode classique pour trouver le plus grand commun diviseur de deux nombres. Son idée de base est de diviser continuellement les diviseurs et les restes de deux nombres.

Explication détaillée du mécanisme d'appel de fonction C++ Explication détaillée du mécanisme d'appel de fonction C++ Apr 11, 2024 pm 02:12 PM

Le mécanisme d'appel de fonction en C++ consiste à transmettre des arguments à une fonction et à exécuter son code, en renvoyant le résultat s'il existe. Il existe deux manières de transmettre des paramètres : passer par valeur (les modifications sont effectuées à l'intérieur de la fonction) et passer par référence (les modifications sont reflétées dans l'appelant). Lors du passage de valeur, les modifications de valeur au sein de la fonction n'affectent pas la valeur d'origine (telle que printValue), tandis que les modifications lors du passage de référence affectent la valeur d'origine (telle que printReference).

En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. En Java, recherchez la somme maximale des sous-tableaux après avoir divisé un tableau en sous-tableaux en fonction d'une requête donnée. Aug 29, 2023 am 11:21 AM

Nous avons deux tableaux d'entiers, l'un avec les éléments calculés et l'autre avec les points de division nécessaires pour diviser le tableau afin de générer des sous-ensembles, nous devons calculer la somme de chaque sous-ensemble dans chaque division et renvoyer le sous-ensemble maximum. Passons en revue l'exemple Comprendre : - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} ; sortie−la somme maximale du sous-tableau après chaque division [ 22, 13,9,9] Explication - Ici, nous décomposons le tableau en fonction de ses points de division et obtenons le sous-ensemble maximum après chaque division et après la première division → {9} et {4,5,6,7 }>> La somme maximale des sous-tableaux est de -22 après la deuxième division →{9},{4

Comment trouver le plus grand diviseur commun en langage C Comment trouver le plus grand diviseur commun en langage C Sep 27, 2023 am 09:41 AM

Le plus grand diviseur commun peut être trouvé en utilisant l'algorithme euclidien en langage C. Le principe est le suivant : le plus grand commun diviseur de deux entiers a et b est égal au reste de a divisé par b et au plus grand commun diviseur de c et b. Cet algorithme est très efficace et peut résoudre rapidement même lorsqu'il s'agit de grands nombres.

Bilan des trois pays qui tuent le protocole Bitcoin layer 1 : BRC-20, Atomics, Runes Bilan des trois pays qui tuent le protocole Bitcoin layer 1 : BRC-20, Atomics, Runes Apr 23, 2024 pm 02:01 PM

Auteur original : 0xSea.eth Avec une hauteur de bloc de 840 000, Bitcoin marquera le début de sa quatrième réduction de moitié, avec une récompense de bloc réduite de 6,25 BTC à 3,125 BTC. Il s'agit d'un événement majeur auquel l'ensemble du secteur du cryptage est attentif. Au sein de l’écosystème Bitcoin, presque tout le monde prête attention au protocole Runes, qui sera mis en ligne avec une hauteur de bloc de 840 000. Comment le protocole Runes va-t-il changer le paysage de l’écosystème du protocole de couche Bitcoin ? Quel impact cela aura-t-il sur BRC-20, Atomics et d’autres protocoles ? En tant qu'observateur et joueur, à la veille du halving et du lancement des Runes, je voudrais faire le tri dans certaines de mes réflexions récentes sur le marché. Le protocole de jeton à une couche Core Viewpoint 1/Bitcoin formera BRC-20, Atomi

Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Écrivez un code en C++ pour trouver le nombre de sous-tableaux avec les mêmes valeurs minimales et maximales Aug 25, 2023 pm 11:33 PM

Dans cet article, nous utiliserons C++ pour résoudre le problème de trouver le nombre de sous-tableaux dont les valeurs maximales et minimales sont les mêmes. Voici un exemple du problème −Input:array={2,3,6,6,2,4,4,4}Output:12Explication :{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}et{4,4,4}sont les sous-tableaux qui peuvent être formés avec les mêmes éléments maximum et minimum. Entrée : tableau = {3, 3, 1,5,

Utiliser la programmation en langage C pour résoudre le plus grand diviseur commun Utiliser la programmation en langage C pour résoudre le plus grand diviseur commun Feb 21, 2024 pm 07:30 PM

Titre : Utilisez la programmation en langage C pour implémenter la solution du plus grand diviseur commun. Le plus grand diviseur commun (Greatest Common Divisor, GCD en abrégé) fait référence au plus grand entier positif qui peut diviser deux entiers ou plus en même temps. La recherche du plus grand diviseur commun peut être très utile pour certains algorithmes et la résolution de problèmes. Dans cet article, la fonction de recherche du plus grand diviseur commun sera implémentée via la programmation en langage C, et des exemples de code spécifiques seront fournis. En langage C, vous pouvez utiliser l'algorithme euclidien pour résoudre le maximum

See all articles