Задача о подсчете делителей и сравнению их количества, не могу найти ошибку

Всем привет, решала такую задачу:

ограничение по времени на тест: 1 секунда
ограничение по памяти на тест: 256 мегабайт
У каждого духа есть имя — натуральное число, и сила — количество делителей имени.
Два духа могут объединиться, если объединяются духи с силой m и n, то получается дух, которого зовут m×n. Дух A поссорился с духом B, и теперь они готовы подраться.
В драке, очевидно, побеждает тот дух, у которого сила больше. A видит для себя такие варианты:

1)Можно подраться с B;

2)Можно позвать на помощь духа C и объединиться с ним. Тогда B будет вынужден драться с тем духом, который получится в результате объединения;

3)Можно сбежать.

Варианты перечислены в порядке убывания привлекательности. Определите лучшую стратегию для A.
Входные данные
Первая строка содержит натуральные числа A,B,C<10^6 — имена соответствующих духов.

Выходные данные
Вывести номер лучшей стратегии для A.

Примеры

входные данные
10 7 10
выходные данные
1
входные данные
5 5 7
выходные данные
2
входные данные
6 10 4
выходные данные
2

Мой код:

#include <iostream>
#include <vector>
#include <set>
using namespace std;

int strong(int n){
    int cnt=0;
    for (int p=1; p*p<=n; p++) {
        if (n%p==0) {
            cnt+=2;
            if (n==p*p) {
                cnt--;
            }
        }
    }
    return cnt;
}
int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    if (strong(a)>strong(b)){
        cout << 1;
        return 0;
    }
    if (strong(a*c)>strong(b)){
        cout << 2;
        return 0;
    }
    cout << 3;
    return 0;
}

(Пробовала засылать с int, но переписала на long long) Код на всех тестах, которые я придумываю, работает правильно, но тестирующая система (Codeforces) пишет, что код выдает неверный ответ на 12-ом тесте. Помогите, пожалуйста, найти ошибку в коде или тест, на котором моя программа работает неверно. Заранее спасибо)


Ответы (0 шт):