📌  相关文章
📜  检查数字是偶数还是奇数,并给出数字和基数(基数)

📅  最后修改于: 2021-04-23 18:10:10             🧑  作者: Mango

给定大小为N的数组arr [] ,它表示数字的数字,整数r是给定数字的基数(基数),即n = arr [n – 1] * r 0 + arr [n – 2] * r 1 +…+ a [0] * r N – 1 。任务是查找给定数字是奇数还是偶数。

例子:

天真的方法:最简单的方法是通过将数字乘以相应的底数幂来计算数字n。但是由于位数可以是10 5的数量级,因此这种方法不适用于较大的n。

高效方法:可能有两种情况。

  1. 如果r是偶数,则最终答案取决于最后一位,即arr [n – 1]
  2. 如果r为奇数,则我们必须计算奇数位数。如果奇数位数为偶数,则总和为偶数。否则,总和是奇数。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function that returns true if the number
// represented by arr[] is even in base r
bool isEven(int arr[], int n, int r)
{
  
    // If the base is even, then
    // the last digit is checked
    if (r % 2 == 0) {
        if (arr[n - 1] % 2 == 0)
            return true;
    }
  
    // If base is odd, then the
    // number of odd digits are checked
    else {
  
        // To store the count of odd digits
        int oddCount = 0;
        for (int i = 0; i < n; ++i) {
            if (arr[i] % 2 != 0)
                oddCount++;
        }
        if (oddCount % 2 == 0)
            return true;
    }
  
    // Number is odd
    return false;
}
  
// Driver code
int main()
{
    int arr[] = { 1, 0 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int r = 2;
  
    if (isEven(arr, n, r))
        cout << "Even";
    else
        cout << "Odd";
  
    return 0;
}


Java
// Java implementation of the approach
import java.io.*;
  
class GFG
{
      
// Function that returns true if the number
// represented by arr[] is even in base r
static boolean isEven(int arr[], int n, int r)
{
  
    // If the base is even, then
    // the last digit is checked
    if (r % 2 == 0)
    {
        if (arr[n - 1] % 2 == 0)
            return true;
    }
  
    // If base is odd, then the
    // number of odd digits are checked
    else {
  
        // To store the count of odd digits
        int oddCount = 0;
        for (int i = 0; i < n; ++i) {
            if (arr[i] % 2 != 0)
                oddCount++;
        }
        if (oddCount % 2 == 0)
            return true;
    }
  
    // Number is odd
    return false;
}
  
// Driver code
public static void main (String[] args) 
{
      
    int arr[] = { 1, 0 };
    int n = arr.length;
    int r = 2;
  
    if (isEven(arr, n, r))
  
        System.out.println ("Even");
    else
      
        System.out.println("Odd");
}
}
  
// This code is contributed by jit_t.


Python3
# Python 3 implementation of the approach
  
# Function that returns true if the number
# represented by arr[] is even in base r
def isEven(arr, n, r):
      
    # If the base is even, then
    # the last digit is checked
    if (r % 2 == 0):
        if (arr[n - 1] % 2 == 0):
            return True
  
    # If base is odd, then the
    # number of odd digits are checked
    else:
        # To store the count of odd digits
        oddCount = 0
        for i in range(n):
            if (arr[i] % 2 != 0):
                oddCount += 1
        if (oddCount % 2 == 0):
            return True
  
    # Number is odd
    return False
  
# Driver code
if __name__ == '__main__':
    arr = [1, 0]
    n = len(arr)
    r = 2
  
    if (isEven(arr, n, r)):
        print("Even")
    else:
        print("Odd")
  
# This code is contributed by
# Surendra_Gangwar


C#
// C# implementation of the approach
using System;
  
class GFG
{
      
// Function that returns true if the number
// represented by arr[] is even in base r
static bool isEven(int []arr, int n, int r)
{
  
    // If the base is even, then
    // the last digit is checked
    if (r % 2 == 0)
    {
        if (arr[n - 1] % 2 == 0)
            return true;
    }
  
    // If base is odd, then the
    // number of odd digits are checked
    else 
    {
  
        // To store the count of odd digits
        int oddCount = 0;
        for (int i = 0; i < n; ++i)
        {
            if (arr[i] % 2 != 0)
                oddCount++;
        }
        if (oddCount % 2 == 0)
            return true;
    }
  
    // Number is odd
    return false;
}
  
// Driver code
public static void Main () 
{
      
    int []arr = { 1, 0 };
    int n = arr.Length;
    int r = 2;
  
    if (isEven(arr, n, r))
  
        Console.WriteLine ("Even");
    else
      
        Console.WriteLine("Odd");
}
}
  
// This code is contributed by anuj_67...


PHP


输出:
Even