配列のGCDがC++で1になるように配列を変換します
このチュートリアルでは、配列のGCDが1になるように配列を変換するプログラムについて説明します。
このために、配列と正の整数kが提供されます。私たちのタスクは、要素のGCDが1になるように配列要素を変換する一方で、要素がk未満になるまで、配列要素をkで何回でも除算することです。
例
#include <bits/stdc++.h> using namespace std; //calculating the GCD of array int calculate_gcd(int* arr, int n){ int gcd = arr[0]; for (int i = 1; i < n; i++) gcd = __gcd(arr[i], gcd); return gcd; } //checking if the operation is possible bool convertGcd(int* arr, int n, int k){ int gcd = calculate_gcd(arr, n); int max_prime = 1; for (int i = 2; i <= sqrt(gcd); i++) { while (gcd % i == 0) { gcd /= i; max_prime = max(max_prime, i); } } max_prime = max(max_prime, gcd); return (max_prime <= k); } int main(){ int arr[] = { 10, 15, 30 }; int k = 6; int n = sizeof(arr) / sizeof(arr[0]); if (convertGcd(arr, n, k) == true) cout << "Yes"; else cout << "No"; return 0; }
出力
Yes
-
C++でKの倍数の間に発生する配列の要素を並べ替えます
配列Aと別の整数Kがあるとします。Kの任意の2つの倍数の間にある要素を並べ替える必要があります。Aが[2、13、3、1、21、7、8、13、12のようであるとします。 ]、およびK =2。出力は[2、1、3、7、13、21、8、13、12]になります。ここで、2の倍数は2、8、および12であり、2と8の間の要素は13、3、1、21、7であり、1、3、7、13、21、8から12の間の要素としてソートされます。はわずか13なので、すでに並べ替えられています。 配列をトラバースし、値Kの倍数を追跡する必要があります。次に、Kの2番目の倍数から始めて、現在と前のKの倍数の間ですべての要素を並べ替えま
-
合計がC++で均等になるように、配列に最小数を追加しますか?
いくつかの番号を持つ配列があるとします。要素の合計を均等にするために、それに追加される数値の最小数を指定する必要があります。数値は0より大きくなければなりません。したがって、要素の合計が奇数の場合は1を加算しますが、合計がすでに偶数の場合は2を加算して偶数にします。 アルゴリズム addMinNumber(arr) begin s := 0 for each element e from arr, do s := e + s done if s i