Bərabər bölənlər#446

Bərabər bölənlər (Həll təhlili)

Belə ki, dəyəri kifayət qədər böyük deyil, dövrədə -in bütün mümkün qiymətlərini -dən -ə qədər tək-tək nəzərdən keçirmək və \lfloor n / m \rfloor = n~mod~m bərabərliyini yoxlamaq olar. Belə -lərin sayını sayırıq.

Misal

Məsələn, n = 20 üçün iki bərabər bölücü mövcuddur: və , çünki

Alqoritmin implementasiyası

Giriş dəyəri -i oxuyuruq.

scanf("%d",&n);

-in -ə bölünməsindən alınan kəsr hissəsi -in -ə bölünməsindən alınan qalıqla (qalıq) bərabər olan m~(2 \le m \le n) sayı olan dəyişənində toplama aparırıq.

res = 0;
for(m = 2; m <= n; m++)
  if ((n / m) == (n % m)) res++;

Cavabı çıxardırıq.

printf("%d\n",res);	

Java implementasiyası

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
    int res = 0;
    for(int m = 2; m <= n; m++)
      if ((n / m) == (n % m)) res++;
    System.out.println(res);
    con.close();
  }
}

Python implementasiyası

Giriş dəyəri -i oxuyuruq.

n = int(input())

-in -ə bölünməsindən alınan kəsr hissəsi -in -ə bölünməsindən alınan qalıqla (qalıq) bərabər olan m~(2 \le m \le n) sayı olan dəyişənində toplama aparırıq.

res = 0
for m in range(2,n) :
  if (n // m == n % m) : res += 1

Cavabı çıxardırıq.

print(res)