Alqoritm Analizi
Ən yüksək nominallı əskinas götürülür və mümkün olduğu qədər məbləğini ödəmək üçün istifadə olunur. Belə əskinasların maksimum sayı ədəddir. Qalan məbləği hryvnia ilə digər nominalarda ödənilir.
Nümunə
770 hryvnia məbləği belə ödənilə bilər: 500 + 200 + 50 + 20.
Alqoritmin Reallaşdırılması
Mövcud əskinasların nominal dəyərləri massivində saxlanılır.
int c[6] = { 500, 200, 100, 50, 20, 10 };
Giriş məbləği oxunur.
scanf("%d", &n);
dəyişənində ödənilən əskinasların sayı hesablanır.
res = 0;
Altı mövcud əskinas nominalı üzrə iterasiya edilir. məbləğini ödəmək üçün nominalındakı əskinaslardan maksimum qədər istifadə edilə bilər. nominalı istifadə edildikdən sonra qalan məbləğ olur.
for (i = 0; i < 6; i++) { res += n / c[i]; n = n % c[i]; }
Bütün məbləğ ödənildisə (), tapılan əskinasların sayı çap olunur. Əks halda, -1 çap olunur.
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 oxunur.
n = int(input())
dəyişənində ödənilən əskinasların sayı hesablanır.
res = 0
Mövcud əskinasların nominal dəyərləri siyahısında saxlanılır.
c = [500, 200, 100, 50, 20, 10]
Altı mövcud əskinas nominalı üzrə iterasiya edilir. məbləğini ödəmək üçün nominalındakı əskinaslardan maksimum qədər istifadə edilə bilər. nominalı istifadə edildikdən sonra qalan məbləğ olur.
for i in range(6): res += n // c[i]; n %= c[i]
Bütün məbləğ ödənildisə (), tapılan əskinasların sayı çap olunur. Əks halda, -1 çap olunur.
if n > 0: print("-1") else: print(res)