Hər bir test üçün giriş ədədləri qrupunu massivinə yerləşdiririk. Daha sonra hər bir (i, j)~(0 \le i < j < m) cütü üçün ƏBOB(mas[i], mas[j]) hesablayırıq və onu ümumi cəmlə əlavə edirik.
Nümunə
Üçüncü nümunə üçün cavab bərabərdir
Alqoritmin həyata keçirilməsi
Giriş ədədlərini massivində saxlayırıq.
#define MAX 110
int m[MAX];gcd funksiyası və ədədlərinin ən böyük ortaq bölənini qaytarır.
int gcd(int a, int b)
{
return (!b) ? a : gcd(b, a % b);
}Proqramın əsas hissəsi. Testlərin sayını oxuyuruq.
scanf("%d", &tests);
while (tests--)
{Hər bir test üçün giriş məlumatlarını oxuyuruq.
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &m[i]);Axtarılan cəmi dəyişənində hesablayırıq.
res = 0;Bütün mümkün indeks cütlərini (0 \le i < j < n) sırayla keçirik, hər bir cüt üçün ƏBOB(m[i], m[j]) hesablayırıq və bu qiyməti -ə əlavə edirik.
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
res += gcd(m[i], m[j]);Cavabı çap edirik.
printf("%d\n", res);
}Python icrası
Testlərin sayını oxuyuruq.
tests = int(input())Hər bir test üçün giriş məlumatlarını oxuyuruq.
for _ in range(tests):
n, *lst = list(map(int, input().split()))Axtarılan cəmi dəyişənində hesablayırıq.
res = 0Bütün mümkün indeks cütlərini (0 \le i < j < n) sırayla keçirik, hər bir cüt üçün ƏBOB(m[i], m[j]) hesablayırıq və bu qiyməti -ə əlavə edirik.
for i in range(n):
for j in range(i + 1, n):
res += math.gcd(lst[i], lst[j])Cavabı çap edirik.
print(res)