In [ProblemlinkA] there is a definition of a number to be "round". To create the set of round numbers we need to observe that every single digit of the initial number can be used to create a round number. Just add the numbers of zeros according to the position of the digit. ie "123" becomes "100 20 3". [SubmissionA]
[ProblemlinkB] ask us to create a set of numbers where the sum equals a given n. The summands are limited to be all odd or all even, and the number of summands is given as k. So it turns out it is a case work of n and k beeing odd or even.
if n is odd and k is even there is no solution, since an even number of summands of same parity will allways give and even sum.
if n is odd and k is odd we can construct a solution by using 1s and a last, bigger number as $$$n-k+1$$$. But we need to check if $$$k>=n$$$ since if not there is now solution.
if n is even ans k is even, too, the previus solution works, too.
Last case is n is even and k is odd. Here we cannot use 1s as summands, because if we do the sum will be odd, but it must be even. So we need to use 2s intead of 1s. Therefor we need to check that $$$k*2<=n$$$ and use last number as $$$n-2*(k-1)$$$ [SubmissionB]
[ProblemlinkC] is a bit mathy. We need to find a number not dividable by n where $$$k-1$$$ lower numbers exist not divisable by k. How to do that? To tell for a given number how much lower/equal numbers exist being divi by n is simple, it is: $$$k-k/n$$$ Since every nth number is divi by n we can use blocks of size n to calculate the solution. A block of n numbers has $$$n-1$$$ numbers not divi by n. So we need to use k/(n-1) blocks, plus the remainder of the blocksize. There is a flaw whith this, if the remainder is zero. To workarround that, we can subtract one from solution, and then add one until solution fits. I hope there is a simpler solution, too ;) [SubmissionC]
[ProblemlinkD] has lengthy statement to make all points clear. We just need to implement all details. I did using a left pointer and a right one. Then, in a loop, I add elements from left according to the rules, and then elements from the right, until left and right meet somewhere in the middle. There the loop ends and the collected numbers can be printed. [SubmissionD]