We can think of what separates a better competitive programmer from the rest as — (among other things) one, having the ability to see a pattern and place it in a container of similar problems done before that all used a similar idea. Harder problems make it difficult to determine which container to place it in, if at all any! This can be abstracted away as instead of accessing the main memory for ideas everytime, they store certain ideas in a cache. The better you become, the closer your cache gets to your CPU and the larger the repository of ideas inside it,
In an effort to become a good CPer myself, I decided to jot down some ideas along the lines of if I see $$$x$$$, think of $$$y$$$ that I observed doing problems. Hopefully they help other people in the community as well.
- Whenever you want to calculate / optimise a function of type $$$f(GCD(x, n))$$$