📌  相关文章
📜  更改K个元素,以使(a1 ^ 2 + a2 ^ 2 +…+ aN ^ 2)<=(a1 + a2 +…+ aN)变为真

📅  最后修改于: 2021-05-07 18:17:11             🧑  作者: Mango

给定一个大小为N的数组Arr 。任务是判断是否有可能以满足以下条件的方式将此序列的最多K个元素更改为任意正整数。

例子:

Input:N = 2, Arr[] = {1, 2}, K = 2
Output: Possible
(As A[2] can be change to 1)

Input: N = 2, Arr[] = {5, 6}, K = 1
Output: Not Possible
(As we can only change 1 element to any arbitrary number
and after changing it doesn't satisfy above condition) 

方法:当数组的所有元素都等于1时,则只能满足给定的方程式,否则不能满足。

  1. 遍历数组并计算1的数量。
  2. 如果K> =(数组大小,即N –计数),则返回true,否则返回false。

下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// Function that will tell
// whether it is possible or Not
int Series(int Arr[], int N, int K)
{
    int count = 0;
    for (int i = 0; i < N; i++)
        if (Arr[i] == 1)
            count++;
 
    if (K >= (N - count))
        return 1;
    else
        return 0;
}
 
// Driver code
int main()
{
    int Arr[] = { 5, 1, 2 };
    int N = sizeof(Arr) / sizeof(Arr[0]);
    int K = 2;
 
    // Calling function.
    int result = Series(Arr, N, K);
 
    if (result == 1)
        cout << "Possible";
    else
        cout << "Not Possible";
    return 0;
}


Java
//Java  implementation of above approach
 
import java.io.*;
 
class GFG {
     
// Function that will tell
// whether it is possible or Not
static int Series(int Arr[], int N, int K)
{
    int count = 0;
    for (int i = 0; i < N; i++)
        if (Arr[i] == 1)
            count++;
 
    if (K >= (N - count))
        return 1;
    else
        return 0;
}
 
// Driver code
    public static void main (String[] args) {
    int Arr[] = { 5, 1, 2 };
    int N = Arr.length;
    int K = 2;
    // Calling function.
    int result = Series(Arr, N, K);
    if (result == 1)
            System.out.println ("Possible");
    else
            System.out.println( "Not Possible");
         
    }
//This Code is Contributed by ajit   
}


Python3
# Python implementation of
# above approach
 
# Function that will tell
# whether it is possible or Not
def Series(Arr, N, K):
    count = 0
    for i in range(N):
        if Arr[i] == 1:
            count += 1
    if K >= (N - count):
        return 1
    return 0
 
# Driver code
Arr = [5, 1, 2]
N = len(Arr)
K = 2
 
result = Series(Arr, N, K)
if result == 1:
    print("Possible")
else:
    print("Not Possible")
 
# This code is contributed
# by Shrikant13


C#
//C# implementation of above approach
 
using System;
 
public class GFG{
     
         
// Function that will tell
// whether it is possible or Not
static int Series(int []Arr, int N, int K)
{
    int count = 0;
    for (int i = 0; i < N; i++)
        if (Arr[i] == 1)
            count++;
 
    if (K >= (N - count))
        return 1;
    else
        return 0;
}
 
// Driver code
     
    static public void Main (){
    int []Arr = { 5, 1, 2 };
    int N = Arr.Length;
    int K = 2;
    // Calling function.
    int result = Series(Arr, N, K);
    if (result == 1)
            Console.WriteLine ("Possible");
    else
            Console.WriteLine( "Not Possible");
         
    }
//This Code is Contributed by akt_mit
}


PHP
= ($N - $count))
        return 1;
    else
        return 0;
}
 
// Driver code
$Arr = array( 5, 1, 2 );
$N = sizeof($Arr);
$K = 2;
 
// Calling function.
$result = Series($Arr, $N, $K);
 
if ($result == 1)
    echo "Possible";
else
    echo "Not Possible";
 
// This code is contributed
// by Sach_Code
?>


Javascript


输出:
Possible