Bütün şarları üç mümkün olduğu qədər bərabər sayda qrupa bölək. Əgər ədədi -ə bölünmürsə, o zaman qrupların ölçüləri bir şardan artıq fərqlənməyəcək. Eyni ölçülü iki qrupu tərəzilərin həqiqi yerlərinə qoyacağıq. Bir çəkmə nəticəsində ağır şarın hansı üç qrupda olduğunu müəyyən edirik.
Beləliklə, şarlarının olduğu problemi bir çəkmə ilə ən pis halda şarları olan problemə endiririk. Demək, ağır şarın tam şəkildə tapılması üçün ⌈log_3n⌉ çəkmələr yetərlidir.
İkinci həll. — 3^p \u003c n qeyri-bərabərliyini əməl edən ən böyük dərəcə olsun. O zaman ağır şarın tam şəkildə tapılması üçün dəyişən çəkmələrin minimum miqdarı p + 1-dir.
Nümunə
Üç şar üçün bir çəkmə yetərlidir. Əgər tərəzilər tarazlıqdadırsa, demək, daha ağır şar tərəzilərə qoyulmamışdır.
şar vəziyyətində onları girovda şar ilə böləcəyik. Hər tərəzinin həqiqi yerinə bir qrupu qoyaraq, bir çəkmə ilə hansı qrupda ağır şarın olduğunu müəyyən edirik.
Əgər şar varsa, onları və şar ilə üç qrupa böləcəyik. Burada tərəzinin həqiqi yerlərinə şarı olan iki qrupu qoyacağıq.
Alqoritmin realizasiyası
Şarların miqdarı -i oxuyuruq.
scanf("%d",&n);Cavabı hesablayır və çıxış edirik.
res = ceil(log(n) / log(3));
printf("%.0lf\n",res); Alqoritmin realizasiyası – dövri
Şarların miqdarı -i oxuyuruq.
scanf("%d",&n); Cavabı hesablayır və çıxış edirik.
res = 0; p = 1;
while (p < n)
{
p = p * 3;
res++;
}
printf("%d\n",res); Java realizasiyası
import java.util.*;
public class Main
{
public static void main(String []args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
double res = Math.ceil(Math.log(n) / Math.log(3));
System.out.printf("%.0f\n",res);
con.close();
}
} Python realizasiyası
Şarların miqdarı -i oxuyuruq.
n = int(input())Cavabı hesablayır və çıxış edirik.
print(int(math.ceil(math.log(n) / math.log(3))))