配列の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