• + 2 comments

    My solution using Python.

    #!/bin/python3
    
    import math
    import os
    import random
    import re
    import sys
    
    #
    # Complete the 'viralAdvertising' function below.
    #
    # The function is expected to return an INTEGER.
    # The function accepts INTEGER n as parameter.
    #
    
    class People:
        def __init__(self, received):
            self.received = received
            self.liked = 0
        
        def calculate_likes(self):
            self.liked = self.received // 2
            return self.liked
        
        def get_next_day_receivers(self):
            return self.liked * 3
    
    
    class Day:
        def __init__(self, day_number, received):
            self.day_number = day_number
            self.people = People(received)
        
        def process_day(self):
            likes = self.people.calculate_likes()
            next_day_receivers = self.people.get_next_day_receivers()
            return likes, next_day_receivers
    
    
    class AdvertisingCampaign:
        def __init__(self, total_days):
            self.total_days = total_days
            self.cumulative_likes = 0
            self.initial_receivers = 5
        
        def run_campaign(self):
            current_receivers = self.initial_receivers
            for day_number in range(1, self.total_days + 1):
                day = Day(day_number, current_receivers)
                likes, next_day_receivers = day.process_day()
                self.cumulative_likes += likes
                current_receivers = next_day_receivers
            return self.cumulative_likes
    
    
    def main():
        n = int(input())
        campaign = AdvertisingCampaign(n)
        total_likes = campaign.run_campaign()
        print(total_likes)
    
    
    if __name__ == "__main__":
        main()