As usual people explained several solutions. Normally this is useful, but I think in this case you'll have to agree that all of the solutions don't require any specialised knowledge, and are common sense, in hindsight. The real question you, the OP, should ask yourself, is: given one of the solutions here, how would you have discovered it by yourself?
Example of fast solution for Q1:
Imagine that the numbers from 1 to 150 are written down one under the other. Now where would we expect 3s to appear?
- This is one of the key heuristics in mathematics: instead of doing something, imagine it and see if you can guess some of its properties, and then prove them using a convincing argument.
Some numbers have 1 digit, others 2, the rest 3. So we can treat them separately.
- This is another important problem-solving heuristic: treat different things separately. (Or make them the same somehow, like @gt6989b suggests.)
The group of numbers with 2 digits each, written down one under the other is like a table with N rows and 2 columns. Instead of seeing it as a bunch of rows, we can look at it as two columns.
- This is another heuristic: if you have a well-behaved object (like a grid of numbers), it can be usually cut up in several different ways.
Notice that in the left column, each of the digits 1 to 9 appears the same number of times each (because there are the same number of 20-somethings and 90-somethings etc.). And in the right column, each of the digits 0 to 9 appear the same number of times each.
- It's useful to establish (1) what things there are, and (2) how many there are of each, if you can.
We know that there are 90 rows in that 2xN table, because there are 99 numbers from 1 to 99, and we don't include the numbers 1 to 9.
- If it's not perfectly clear how many things there are, trace back to how we got them. Usually a thing is the result of some operation on two or more things together. If you know how many there were before, and what happens when you operate on them, then you know how many there are now.
So there are 90 things in the left column and 1/9th are '3's. And there are 90 things in the right column and 1/10th of them are '3's. So, from both columns, there are 90/9 + 90/10 = 10 + 9 = 19. So there are nineteen 3s in the two-digit numbers group.
Well, you can see how it proceeds from here.
Actually, people have been trying to understand these problem-solving heuristics since the 1960s, so they could program computers to solve problems. And they succeeded for simple problems like these, but then essentially failed when, instead of mathematical problems, where everything is exact and means only one thing, they started to attack problems involving spoken language, people's relationships and communication when they're aware of each other's points of view, what happens to physical objects when various actions are applied to them, and other common sense problems that humans solve very easily, but where the objects and actions are not exact and well-defined. In 50 years, AI hasn't been able to replicate common sense in a machine. Even though many of the people who worked on this problem and failed went on to achieve major successes in other fields.
Anyway, this is why the only way to learn problem-solving is practice. Every time you solve a problem, your heuristic machinery gets slightly improved. When solving the problem about numbers 1 to 150, you don't just end up with the solution to that problem, but with some new heuristics (i.e. rules about what to do and where is a good idea to apply it) that go beyond this problem, and which will be useful in a good percentage of other problems you'll meet.
You might wonder: can we make a big list of all heuristics? I think it can be useful to try, but I expect that the list would be enormous. It would take several books to record it, and that would make it useless, if you read it and tried to memorise one at a time. Therefore, I think that solving new problems is the most efficient way to learn problem-solving techniques. However, once you've solved a problem that you initially struggled with, it is a very good idea to review what heuristics you've used, and which ones you should have used, and the exact point in your reasoning where you could have done better.
And most importantly, the things I wrote might seem simple, but the way very complicated problems are solved is using the same simple heuristics like some of those listed above, but many many times, and often a large number of them are used summarily (i.e. using a theorem that has been proved, and jumping directly from its premises to its conclusions, even if it took mathematicians collectively a few hundred years of applying simple heuristics to work out).