Dado un número entero N que es el número de vértices. La tarea es encontrar el número de gráficos distintos que se pueden formar. Dado que la respuesta puede ser muy grande, imprima la respuesta % 1000000007 .
Ejemplos:
Entrada: N = 3
Salida: 8
Entrada: N = 4
Salida: 64
Acercarse:
- El número máximo de aristas que puede contener un gráfico con N vértices es X = N * (N – 1) / 2.
- El número total de grafos que contienen 0 aristas y N vértices será X C 0
- El número total de grafos que contienen 1 arista y N vértices será X C 1
- Y así sucesivamente desde un número de aristas 1 a X con N vértices
- Por lo tanto, el número total de grafos que se pueden formar con n vértices será:
X C 0 + X C 1 + X C 2 + … + X C X = 2 X .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; // Function to return (x^y) % MOD // in O(log(y)) long long power(long long x, long long y, const int& MOD) { long long res = 1; while (y > 0) { if (y & 1) res = (res * x) % MOD; x = (x * x) % MOD; y /= 2; } return res; } // Function to return the count of distinct // graphs possible with n vertices long long countGraphs(int n) { // Maximum number of edges for a // graph with n vertices long long x = n * (n - 1) / 2; // Function to calculate // (2^x) % mod return power(2, x, MOD); } // Driver code int main() { int n = 5; cout << countGraphs(n); return 0; }
Java
// Java implementation of the approach class GFG { static final int MOD = (int)1e9 + 7; // Function to return (x^y) % MOD // in O(log(y)) static long power(long x, long y) { long res = 1; while (y > 0) { if ((y & 1) != 0) res = (res * x) % MOD; x = (x * x) % MOD; y /= 2; } return res; } // Function to return the count of distinct // graphs possible with n vertices static long countGraphs(int n) { // Maximum number of edges for a // graph with n vertices long x = n * (n - 1) / 2; // Function to calculate // (2^x) % mod return power(2, x); } // Driver code public static void main (String[] args) { int n = 5; System.out.println(countGraphs(n)); } } // This code is contributed by AnkitRai01
Python
MOD = int(1e9 + 7) # Function to return the count of distinct # graphs possible with n vertices def countGraphs(n): # Maximum number of edges for a # graph with n vertices x = (n *( n - 1 )) //2 # Return 2 ^ x return (pow(2, x, MOD)) # Driver code n = 5 print(countGraphs(n))
C#
// C# implementation of the approach using System; class GFG { static int MOD = (int)1e9 + 7; // Function to return (x^y) % MOD // in O(log(y)) static long power(long x, long y) { long res = 1; while (y > 0) { if ((y & 1) != 0) res = (res * x) % MOD; x = (x * x) % MOD; y /= 2; } return res; } // Function to return the count of distinct // graphs possible with n vertices static long countGraphs(int n) { // Maximum number of edges for a // graph with n vertices long x = n * (n - 1) / 2; // Function to calculate // (2^x) % mod return power(2, x); } // Driver code static public void Main () { int n = 5; Console.Write(countGraphs(n)); } } // This code is contributed by ajit.
Javascript
<script> // Javascript implementation of the approach const MOD = 1000000000 + 7; // Function to return (x^y) % MOD // in O(log(y)) function power(x, y, MOD) { let res = 1; while (y > 0) { if (y & 1) res = (res * x) % MOD; x = (x * x) % MOD; y = parseInt(y / 2); } return res; } // Function to return the count of distinct // graphs possible with n vertices function countGraphs(n) { // Maximum number of edges for a // graph with n vertices let x = parseInt(n * (n - 1) / 2); // Function to calculate // (2^x) % mod return power(2, x, MOD); } // Driver code let n = 5; document.write(countGraphs(n)); </script>
Producción:
1024
Complejidad del tiempo: O(log(n 2 ))
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Sc00by_d00 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA