In this problem we have a digital (7 led segment) clock and we have to count how many times will the individual leds turn on after X seconds (starting form 00:00:00 position).

We have to take into account that every second all leds turn off and then the ones of the next position will turn on.

Sample Input:

0 4

Sample output:

36 172

I made a quite simple solution for Java:

- We parse the input.
- For each second we calculate the value that each led will have.
- We calculate the number of leds on for each of the previous led value and add all of them.
- We print the final result.

This solution has a complexity in big O notation of O(6*N) being N the input number of seconds.

The code is shown below:

/** * problem http://contest.tuenti.net/Question_6.html * @author gru */ public class Main { //these constants contain the number of leds on for each number static final int zero = 6; static final int one = 2; static final int two = 5; static final int three = 5; static final int four = 4; static final int five = 5; static final int six = 6; static final int seven = 3; static final int eight = 7; static final int nine = 6; public static void main(String[] args) { //parse the input (time in seconds) int input = Integer.parseInt(args[0]); //count will contain the output int count = 0; //each iteration calculates one second for (int i = 0; i <= input; i++) count += toTime(i); //print out the result System.out.println(count); } //this method converts seconds to a real hour private static int toTime(int i) { int count = 0; //hours units count += toLeds((i / 6000) % 10); //hours tens count += toLeds(((i / 6000) % 100) / 10); //minutes units count += toLeds((i / 60) % 10); //minutes tens count += toLeds(((i / 60) % 100) / 10); //seconds units count += toLeds((i % 60) % 10); //seconds tens count += toLeds(((i % 60) % 100) / 10); return count; } //this method returns the # of leds turned on for each digit (0-9) private static int toLeds(int i) { if (i == 0) return zero; else if (i == 1) return one; else if (i == 2) return two; else if (i == 3) return three; else if (i == 4) return four; else if (i == 5) return five; else if (i == 6) return six; else if (i == 7) return seven; else if (i == 8) return eight; else return nine; } }

## No comments:

## Post a Comment