Skip to content
TheCScience
TheCScience

Everything About Education

  • Pages
    • About US
    • Contact US
    • Privacy Policy
    • DMCA
  • Human values
  • NCERT Solutions
  • HackerRank solutions
    • HackerRank Algorithms Problems Solutions
    • HackerRank C solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
TheCScience
TheCScience

Everything About Education

HackerRank Strange Counter Problem Solution

Yashwant Parihar, April 19, 2023April 28, 2023

In this post, we will solve HackerRank Strange Counter Problem Solution.

There is a strange counter. At the first second, it displays the number 3. Each second, the
number displayed by decrements by 1 until it reaches 1. In next second, the timer resets to
2 × the initial number for the prior cycle and continues counting down. The diagram
below shows the counter values for each time t in the first three cycles:

Find and print the value displayed by the counter at time t.

Function Description

Complete the strangeCounter function in the editor below.

strangeCounter has the following parameter(s):

  • int t: an integer

Returns

  • int: the value displayed at time t

Input Format

A single integer, the value of t.

Sample Input

4

Sample Output

6

Explanation

Time t = 4 marks the beginning of the second cycle. It is double the number displayed at the beginning of the first cycle:2 x 3 = 6. This is shown in the diagram in the problem statement.

HackerRank Strange Counter Problem Solution
HackerRank Strange Counter Problem Solution

Strange Counter C Solution

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {

    long long unsigned int cnt, t, val, diff;
    
    val = cnt = t = diff = 0;
    scanf("%lld", &t);
    val = 3;
    cnt = 1;
    while(cnt <= t) {
        diff = val - 1;
        if ((cnt+diff) >= t) {
            printf ("%lld\n", val - (t - cnt));
            break;
        } else {
            cnt = cnt + diff + 1;
            val *= 2;
        }
    }
    
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */    
    return 0;
}

Strange Counter C++ Solution

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
using namespace std;

#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;(i)>=0;(i)--)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
#define PB_VEC(Itr1,Itr2) (Itr1).insert((Itr1).end(),(Itr2).begin(),(Itr2).end())
#define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end())

typedef long long ll;

int main(){
    
    ll t; cin>>t;
    
    ll ans=1;
    ll sum=0;
    while(true){
        if(sum+ans*3>=t)break;
        sum+=ans*3;
        ans*=2;
    }
    
    ll cnt=t-sum;
    
    cout<<(ans+1)*3-cnt-2<<endl;
    
    return 0;
}

Strange Counter C Sharp Solution

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {

    private const int start = 3; 
        static void Main(string[] args)
        {
            long t = Convert.ToInt64(Console.ReadLine());
            var point = GetStartPoint(t);
            var distance = t + 2 - point;
            var res = point - distance; 
            Console.WriteLine(res);
        }

        private static long GetStartPoint(long time) {
            long res = start;
            var compare = time + 2;
            while (true)
            {                
                if ((compare >= res) && (compare < res * 2)) {
                    break;
                }
                res = res * 2;
            }
            
            return res;
        }
}

Strange Counter Java Solution

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'strangeCounter' function below.
     *
     * The function is expected to return a LONG_INTEGER.
     * The function accepts LONG_INTEGER t as parameter.
     */

    public static long strangeCounter(long t) {
        long v=4;

        while(v<=t)
        {
            v=v*2+2;
        }
        return v-t;
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        long t = Long.parseLong(bufferedReader.readLine().trim());

        long result = Result.strangeCounter(t);

        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();

        bufferedReader.close();
        bufferedWriter.close();
    }
}

Strange Counter JavaScript Solution


process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;

process.stdin.on('data', function (data) {
    input_stdin += data;
});

process.stdin.on('end', function () {
    input_stdin_array = input_stdin.split("\n");
    main();    
});

function readLine() {
    return input_stdin_array[input_currentline++];
}

/////////////// ignore above this line ////////////////////

function main() {
    var t = parseInt(readLine());
    console.log(kanter(t))
}

__find_kth_pivot_cache = []
function find_kth_pivot(k) {
	if (k==0) {
       return 1
	}
	if (__find_kth_pivot_cache[k]) {
		return __find_kth_pivot_cache[k]
	}
	var retVal = find_kth_pivot(k-1) + 3*Math.pow(2,k-1)
	__find_kth_pivot_cache[k] = retVal
	return retVal
}

//returns m <= n
function find_k_m_lte_n(n) {
   var k = 0;
   var m = find_kth_pivot(0);
   while(m <= n) {
   	k++
   	m = find_kth_pivot(k)

   	if (m > n) {
   	  k--
   	  m = find_kth_pivot(k);
   	  break
   	}
   };
   var retVal = {
   	m: m,
   	k: k
   };

   // console.log(n + '=>' + retVal.m + ',' + retVal.k)
   return retVal;
}

function calculate_pivot_value(k) {
	if (k==0) {
		return 3
	} else {
		return 2 * calculate_pivot_value(k-1)
	}
}

function kanter(n) {

  var k_and_m = find_k_m_lte_n(n);
  var k = k_and_m.k
  var m = k_and_m.m

  var val_m = calculate_pivot_value(k)
  retVal = val_m - (n - m)

  //console.log('n', n, 'm',m)

  //console.log('n = ', n)
  //console.log('f(m) = ' + val_m)
  //console.log('n = ', n, 'f(n) = ' + retVal)

  return retVal
}




/*
kanter(1)
kanter(2)
kanter(3)
kanter(4)
kanter(5)
kanter(6)
kanter(7)
kanter(8)
kanter(9)
kanter(10)
kanter(20)
kanter(21)
kanter(22)
*/

Strange Counter Python Solution

tf = int(input())

t = []

t.append(1)
t.append(4)
t.append(10)
t.append(22)
t.append(46)
t.append(94)
t.append(190)
t.append(382)
t.append(766)
t.append(1534)
t.append(3070)
t.append(6142)
t.append(12286)
t.append(24574)
t.append(49150)
t.append(98302)
t.append(196606)
t.append(393214)
t.append(786430)
t.append(1572862)
t.append(3145726)
t.append(6291454)
t.append(12582910)
t.append(25165822)
t.append(50331646)
t.append(100663294)
t.append(201326590)
t.append(402653182)
t.append(805306366)
t.append(1610612734)
t.append(3221225470)
t.append(6442450942)
t.append(12884901886)
t.append(25769803774)
t.append(51539607550)
t.append(103079215102)
t.append(206158430206)
t.append(412316860414)
t.append(824633720830)
t.append(1000000000001)

nv = next(x[0] for x in enumerate(t) if x[1] > tf) - 1
#print(nv)
sum = 2*t[nv] + 2 - tf
print(sum)

Other Solutions

  • HackerRank 3D Surface Area Problem Solution
  • HackerRank Absolute Permutation Solution
c C# C++ HackerRank Solutions java javascript python CcppCSharpHackerrank Solutionsjavajavascriptpython

Post navigation

Previous post
Next post

Leave a Reply

You must be logged in to post a comment.

Similar websites

  • Programming
  • Data Structures
©2025 TheCScience | WordPress Theme by SuperbThemes