📜  从给定列表中找到函数值最接近A的数字

📅  最后修改于: 2021-04-29 01:08:01             🧑  作者: Mango

给定一个函数F(n)= P –(0.006 * n) ,其中P是给定的。给定一个整数和一个数字列表, A 。任务是从给定列表中找到该函数的值最接近的数字A

例子

Input : P = 12, A = 5
        List = {1000, 2000} 
Output : 1
Explanation :
Given, P=12, A=5
For 1000, F(1000) is 12 - 1000×0.006 = 6
For 2000, F(2000) is 12 - 2000×0.006 = 0
As the nearest value to 5 is 6, 
so the answer is 1000.

Input : P = 21, A = -11
        List = {81234, 94124, 52141}
Output : 3

方法:遍历给定列表中的每个值,并为每个值找到F(n)。现在,比较F(n)和A的每个值与A的值的绝对差n ,绝对差最小为答案。

下面是上述方法的实现:

C++
// C++ program to find number from
// given list for which value of the
// function is closest to A
#include 
using namespace std;
  
// Function to find number from
// given list for which value of the
// function is closest to A
int leastValue(int P, int A, int N, int a[])
{
  
    // Stores the final index
    int ans = -1;
  
    // Declaring a variable to store
    // the minimum absolute difference
    float tmp = (float)INFINITY;
  
    for (int i = 0; i < N; i++)
    {
  
        // Finding F(n)
        float t = P - a[i] * 0.006;
  
        // Updating the index of the answer if
        // new absolute difference is less than tmp
        if (abs(t-A) < tmp)
        {
            tmp = abs(t - A);
            ans = i;
        }
    }
    return a[ans];
}
  
// Driver code
int main()
{
    int N = 2, P = 12, A = 2005;
    int a[] = {1000, 2000};
  
    cout << leastValue(P, A, N, a) << endl;
}
  
// This code is contributed by
// sanjeev2552


Java
// Java program to find number from
// given list for which value of the
// function is closest to A
import java.util.*;
  
class GFG
{
  
// Function to find number from
// given list for which value of the
// function is closest to A
static int leastValue(int P, int A, 
                      int N, int a[])
{
  
    // Stores the final index
    int ans = -1;
  
    // Declaring a variable to store
    // the minimum absolute difference
    float tmp = Float.MAX_VALUE;
  
    for (int i = 0; i < N; i++)
    {
  
        // Finding F(n)
        float t = (float) (P - a[i] * 0.006);
  
        // Updating the index of the answer if
        // new absolute difference is less than tmp
        if (Math.abs(t-A) < tmp)
        {
            tmp = Math.abs(t - A);
            ans = i;
        }
    }
    return a[ans];
}
  
// Driver code
public static void main(String[] args)
{
    int N = 2, P = 12, A = 2005;
    int a[] = {1000, 2000};
  
    System.out.println(leastValue(P, A, N, a));
}
}
  
// This code is contributed by 29AjayKumar


Python3
# Python program to find number from 
# given list for which value of the 
# function is closest to A
  
# Function to find number from 
# given list for which value of the 
# function is closest to A
def leastValue(P, A, N, a):
    # Stores the final index
    ans = -1
      
    # Declaring a variable to store
    # the minimum absolute difference
    tmp = float('inf')
    for i in range(N):
        # Finding F(n)
        t = P - a[i] * 0.006
          
        # Updating the index of the answer if
        # new absolute difference is less than tmp
        if abs(t - A) < tmp:
            tmp = abs(t - A)
            ans = i
              
    return a[ans]
  
# Driver Code
N, P, A = 2, 12, 5
a = [1000, 2000]
  
print(leastValue(P, A, N, a))


C#
// C# program to find number from
// given list for which value of the
// function is closest to A
using System;
      
class GFG
{
  
// Function to find number from
// given list for which value of the
// function is closest to A
static int leastValue(int P, int A, 
                      int N, int []a)
{
  
    // Stores the final index
    int ans = -1;
  
    // Declaring a variable to store
    // the minimum absolute difference
    float tmp = float.MaxValue;
  
    for (int i = 0; i < N; i++)
    {
  
        // Finding F(n)
        float t = (float) (P - a[i] * 0.006);
  
        // Updating the index of the answer if
        // new absolute difference is less than tmp
        if (Math.Abs(t-A) < tmp)
        {
            tmp = Math.Abs(t - A);
            ans = i;
        }
    }
    return a[ans];
}
  
// Driver code
public static void Main(String[] args)
{
    int N = 2, P = 12, A = 2005;
    int []a = {1000, 2000};
  
    Console.WriteLine(leastValue(P, A, N, a));
}
}
  
// This code is contributed by Rajput-Ji


PHP


输出:
1000