Ən yüksək məbləğdə əskinası götürüb, mümkündürsə, məbləği qədər tədarük edirik. Maksimal olaraq belə əskinaslardan ədəd verə bilərik. Qalan hriven qalan nominalardan veririk.
Nümunə
hriven məbləğini aşağıdakı şəkildə verə bilərik: 500 + 200 + 50 + 20.
Alqoritmin reallaşdırılması
Əlimizdə olan əskinasların nominalarını massivinə qeyd edirik.
int c[6] = { 500, 200, 100, 50, 20, 10 };Giriş məbləği oxuyuruq.
scanf("%d", &n);dəyişkənində verilmiş əskinasların sayını hesablayaq.
res = 0;Əlimizdə olan altı ədəd əskinasın nominalarını nəzərdən keçiririk. Məbləği vermək üçün maksimal olaraq ədəd nominalda əskinasa istifadə edə bilərik. Nominalı istifadə etdikdən sonra qalan məbləğ bərabər olur.
for (i = 0; i < 6; i++)
{
res += n / c[i];
n = n % c[i];
}Əgər bütün məbləğ verilibsə (n = 0), tapılan əskinas sayını yazırıq. Əks halda yazırıq.
if (n > 0) printf("-1\n"); else printf("%d\n", res);Java reallaşdırılması
import java.util.*;
public class Main
{
static int c[] = {500, 200, 100, 50, 20, 10};
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int res = 0;
for(int i = 0; i < 6; i++)
{
res += n / c[i];
n = n % c[i];
}
if (n > 0)
System.out.println("-1");
else
System.out.println(res);
con.close();
}
} Python reallaşdırılması
Giriş məbləği oxuyuruq.
n = int(input())dəyişkənində verilmiş əskinasların sayını hesablayaq.
res = 0Əlimizdə olan əskinas nominalarını siyahısına qeyd edirik.
c = [500, 200, 100, 50, 20, 10]Əlimizdə olan altı ədəd əskinas nominalarını nəzərdən keçiririk. Məbləği vermək üçün maksimal olaraq ədəd nominalda əskinasa istifadə edə bilərik. Nominalı istifadə etdikdən sonra qalan məbləğ bərabər olur.
for i in range(6):
res += n // c[i]
n %= c[i]Əgər bütün məbləğ verilibsə (n = 0), tapılan əskinas sayını yazırıq. Əks halda yazırıq.
if n > 0:
print("-1")
else:
print(res)