Гораздо более быстрый способ - сначала немного по математике.ax+by=c
=> y=(c-ax)/b
int combs=0;
for(int x=0; x < c; x++) {
int y = (c-a*x)/b;
if( (a*x) + (b*y) == c)
combs++;
}
Избавление от этого вложенного цикла является наиболее важной деталью для повышения производительности.Другая вещь, которую вы можете сделать, это сделать, как предложил Антти Хаапала в комментариях ниже, и использовать топор вместо x.
int combs=0;
for(int ax=0; ax < c; ax+=a) {
int y = (c-ax)/b;
if( (ax) + (b*y) == c)
combs++;
}