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;
}
}

kırşehir
ReplyDeletekırıkkale
manisa
tokat
urfa
Q6KH8