# Viral Advertising – HackerRank Solution

In this post, we will solve Viral Advertising HackerRank Solution. This problem (Viral Advertising) is a part of HackerRank Algorithms series.

HackerLand Enterprise is adopting a new viral advertising strategy. When they launch a new product, they advertise it to exactly 5 people on social media.

On the first day, half of those 5 people (i.e., floor(5/2) = 2) like the advertisement and each shares it with 3 of their friends. At the beginning of the second day, floor(5/2) x 3 = 2 x 3 = 6 people receive the advertisement.

Each day, floor(recipients/2) of the recipients like the advertisement and will share it with 3 friends on the following day. Assuming nobody receives the advertisement twice, determine how many people have liked the ad by the end of a given day, beginning with launch day as day 1.

Example
n = 5.

``````Day Shared Liked Cumulative
1      5     2       2
2      6     3       5
3      9     4       9
4     12     6      15
5     18     9      24``````

The progression is shown above. The cumulative number of likes on the 5th day is 24.

Function Description

Complete the viralAdvertising function in the editor below.

• int n: the day number to report

Returns

• int: the cumulative likes at that day

## Input Format

A single integer, n, the day number.

## Constraints

• 1 <= n <= 50

Sample Input

``3``

Sample Output

``9``

Explanation

## Solution – Viral Advertising – HackerRank Solution

### C++

```#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n;
cin>>n;

int m = 5;
int total;
for(int i=0; i<n; ++i){
m = m/2;
total += m;
m *= 3;
}

cout<<total<<endl;
return 0;
}
```

### Python

```#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the viralAdvertising function below.
shared =5
cumulative=0
for i in range(1,n+1):
liked = shared//2
cumulative+=liked
shared = liked*3
return cumulative

if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')

n = int(input())

fptr.write(str(result) + '\n')

fptr.close()
```

### Java

```import java.io.*;
import java.util.*;

public class Solution {

public static final int INITIAL_AMOUNT_OF_PEOPLE = 5;

public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int n = scanner.nextInt();
int currentAmount = INITIAL_AMOUNT_OF_PEOPLE;
int totalNumber = 0;
for (int i = 0; i < n; i++) {
currentAmount = currentAmount/2;
totalNumber += currentAmount;
currentAmount *= 3;
}
System.out.println(totalNumber);
}
}
}
```

Note: This problem (Viral Advertising) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.