Задача
Натуральное число $m$ называется ровным делителем числа $n$, если частное и остаток от деления $n$ на $m$ равны. По заданному натуральному числу $n$ найти количество его ровных делителей.
Входные данные
Натуральное число $n \space (1 ≤ n ≤ 10^{6})$.
Выходные данные
Выведите искомое количество ровных делителей числа $n$.
Тесты
Входные данные | Выходные данные |
5 | 1 |
20 | 2 |
200 | 6 |
653 | 1 |
5982 | 4 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main() { unsigned n, q = 0; cin >> n; for (int m = 1; m <= n; m++) if (n / m == n % m) q += 1; cout << q; return 0; } |
Решение
Для решения этой задачи сперва введем переменную q, в которой будем хранить количество ровных делителей числа $n$. Затем запустим цикл, который будет проверять каждое из чисел от $1$ до $n$ включительно, является ли оно ровным делителем. Если условие выполняется, то увеличиваем значение, хранящееся в q на единицу. После цикла выведем искомое на экран.
Ссылки
Условие задачи на e-olymp
Код решения на Ideone