Editorial for WC '15 Contest 2 J1 - A New Hope
Submitting an official solution before solving the problem yourself is a bannable offence.
The first junior problem is always meant to test the bare basics of interpretation and implementation – i.e. can you understand what the problem is asking and use your language on a rudimentary level to do basic input/output accordingly? In this case, we just have to input a number and output the sentence with number of
fars. The hardest part is following the output format exactly. Two ways to approach this are as follows.
The first way follows simple intuition – output the first part of the phrase, loop times to output
far, and finally output the last part of the phrase. However, this raises a common problem with loops – we actually want the first and last iterations of the loop to do different things (the first
far should be followed by a comma, but the last
far should not). The typical ways to handle this are: doing a check within the loop for the border case, or just doing the border case outside of the loop and only loop times. The last option is usually easier because it removes the need for an extra if-statement.
Another possible solution comes from simply observing that the number of
fars can only be as big as , which tells us that it's quite feasible to "hardcode" the answer. In other words, we can use if/else-statements to check what is equal to, and then go on to copy and paste the line of code which outputs the phrase for each of the conditions, except with the number of
fars manually modified in each case.
if (N == 1)
cout << "A long time ago in a galaxy far away..." << endl;
else if (N == 2)
cout << "A long time ago in a galaxy far, far away..." << endl;
else if (N == 3)
cout << "A long time ago in a galaxy far, far, far away..." << endl;
This is also a perfectly fair solution, because some of you may be able to hardcode faster than obtaining a generic version using loops (which works for any sized , and not just for not exceeding ). Although contests encourage taking advantage of small input sizes to speed up coding, just know that you should eventually be acquainted with writing generic solutions for harder problems that must scale.