Programa para comprobar si N es un número de estrella

Dado un número entero N , la tarea es verificar si es un número de estrella o no.
 

El número de estrella es un número figurado centrado que representa un hexagrama centrado (estrella de seis puntas) similar al juego de damas chino. Los primeros números de estrellas son 1, 13, 37, 73…

Ejemplos: 
 

Entrada: N = 13 
Salida: Sí 
Explicación: 
El segundo número de estrella es 13.
Entrada: 14 
Salida: No 
Explicación: 
El segundo número de estrella es 13, donde 37 es el tercero. 
Por lo tanto, 14 no es un número de estrella. 
 

Acercarse: 
 

  1. El K -ésimo término del número de estrella se da como
    K^{th} Término = 6*K*(K-1) + 1
     
  2. Como tenemos que comprobar que el número dado se puede expresar como un número de estrella o no. Esto se puede comprobar de la siguiente manera: 
     

=>  N = 6*K*(K-1) + 1
=>  N = 6*K^{2} - 6*K + 1
=> K = \frac{6 + \sqrt{24*N + 12}}{12}
 

  1.  
  2. Finalmente, verifique que el valor de calculado usando estas fórmulas sea un número entero, lo que significa que N es un número de estrella.

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation to check that
// a number is a star number or not
 
#include <bits/stdc++.h>
 
using namespace std;
 
// Function to check that the
// number is a star number
bool isStar(int N)
{
    float n
        = (6 + sqrt(24 * N + 12))
          / 6;
 
    // Condition to check if the
    // number is a star number
    return (n - (int)n) == 0;
}
 
// Driver Code
int main()
{
    int i = 13;
 
    // Function call
    if (isStar(i)) {
        cout << "Yes";
    }
    else {
        cout << "No";
    }
    return 0;
}

Java

// Java implementation to check that
// a number is a star number or not
import java.io.*;
import java.util.*;
 
class GFG{
     
// Function to check that the
// number is a star number
static boolean isStar(int N)
{
    double n = (6 + Math.sqrt(24 * N + 12)) / 6;
 
    // Condition to check if the
    // number is a star number
    return (n - (int)n) == 0;
}
     
// Driver code
public static void main(String[] args)
{
    int i = 13;
 
    // Function call
    if (isStar(i))
    {
        System.out.println("Yes");
    }
    else
    {
        System.out.println("No");
    }
}
}
 
// This code is contributed by coder001

Python3

# Python3 implementation to check that
# a number is a star number or not
import math
 
# Function to check that the
# number is a star number
def isStar(N):
     
    n = (math.sqrt(24 * N + 12) + 6) / 6
     
    # Condition to check if the
    # number is a star number
    return (n - int(n)) == 0
     
# Driver Code
i = 13
 
# Function call
if isStar(i):
    print("Yes")
else:
    print("No")
 
# This code is contributed by ishayadav181

C#

// C# implementation to check that
// a number is a star number or not
using System;
 
class GFG{
     
// Function to check that the
// number is a star number
static bool isStar(int N)
{
    double n = (6 + Math.Sqrt(24 * N + 12)) / 6;
 
    // Condition to check if the
    // number is a star number
    return (n - (int)n) == 0;
}
     
// Driver code
public static void Main()
{
    int i = 13;
 
    // Function call
    if (isStar(i))
    {
        Console.WriteLine("Yes");
    }
    else
    {
        Console.WriteLine("No");
    }
}
}
 
// This code is contributed by Code_Mech

Javascript

<script>
// Javascript implementation to check that
// a number is a star number or not
 
// Function to check that the
// number is a star number
function isStar(N)
{
    let n
        = (6 + Math.sqrt(24 * N + 12))
          / 6;
 
    // Condition to check if the
    // number is a star number
    return (n - parseInt(n)) == 0;
}
 
// Driver Code
let i = 13;
 
// Function call
if (isStar(i)) {
    document.write("Yes");
}
else {
    document.write("No");
}
 
// This code is contributed by rishavmahato348.
</script>
Producción: 

Yes

 

Complejidad de tiempo: O (n 1/2 )

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *