Given an integer N, the task is to find the ways to choose some balls out of the given N balls such that at least one ball is chosen. Since the value can be large so print the value modulo 1000000007.
Example:
Input: N = 2
Output: 3
The three ways are “*.”, “.*” and “**” where ‘*’ denotes
the chosen ball and ‘.’ denotes the ball which didn’t get chosen.
Input: N = 30000
Output: 165890098
Approach: There are N balls and each ball can either be chosen or not chosen. Total number of different configurations is 2 * 2 * 2 * … * N. We can write this as 2N. But the state where no ball is chosen has to be subtracted from the answer. So, the result will be (2N – 1) % 1000000007.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int countWays( int n)
{
int ans = 1;
for ( int i = 0; i < n; i++) {
ans *= 2;
ans %= MOD;
}
return ((ans - 1 + MOD) % MOD);
}
int main()
{
int n = 3;
cout << countWays(n);
return 0;
}
|
Java
class GFG
{
static int MOD = 1000000007 ;
static int countWays( int n)
{
int ans = 1 ;
for ( int i = 0 ; i < n; i++)
{
ans *= 2 ;
ans %= MOD;
}
return ((ans - 1 + MOD) % MOD);
}
public static void main(String[] args)
{
int n = 3 ;
System.out.println(countWays(n));
}
}
|
Python3
MOD = 1000000007
def countWays(n):
return ((( 2 * * n) - 1 ) % MOD)
n = 3
print (countWays(n))
|
C#
using System;
class GFG
{
static int MOD = 1000000007;
static int countWays( int n)
{
int ans = 1;
for ( int i = 0; i < n; i++)
{
ans *= 2;
ans %= MOD;
}
return ((ans - 1 + MOD) % MOD);
}
public static void Main(String[] args)
{
int n = 3;
Console.WriteLine(countWays(n));
}
}
|
Javascript
<script>
MOD = 1000000007;
function countWays(n) {
var ans = 1;
for (i = 0; i < n; i++) {
ans *= 2;
ans %= MOD;
}
return ((ans - 1 + MOD) % MOD);
}
var n = 3;
document.write(countWays(n));
</script>
|
Time Complexity : O(n)
Auxiliary Space : O(1)