Solução escrita por Enzo Dantas
Olhando para as duas variáveis a e b e tentando limitá-las de alguma forma, percebemos que podemos fazer com que uma delas seja menor ou igual a ⌈√M⌉. Defina R=⌈√M⌉ (R de raiz). Se ambas fossem maior que R, então poderíamos diminuir uma delas e o produto a⋅b ainda seria maior ou igual a M. Logo, testaremos todos os valores entre 1 e R para a, acharemos o b correspondente, ou seja, o menor b tal que a⋅b≥M, e, caso b≤N, salvamos a⋅b como uma possível resposta. Mexendo com a equação temos que a=⌈Mb⌉. Assim, temos:
resposta=min(resposta,a⋅b) ∀ 1≤a≤min(N,R)
Recomendamos que você tente implementar o problema antes de ver o código. Veja a implementação nesse link.