Решение, что называется, "в лоб" (далеко, очень далеко, не самое лучшее): var s,k1,k5,k10,k50,k100,k500,k1000,k10000:integer; begin write('s = '); readln(s); k1:=0; k5:=0; k10:=0; k50:=0; k100:=0; k500:=0; k1000:=0; k10000:=0; while s>=10000 do begin s:=s-10000; k10000:=k10000+1; end; while s>=1000 do begin s:=s-1000; k1000:=k1000+1; end; while s>=500 do begin s:=s-500; k500:=k500+1; end; while s>=100 do begin s:=s-100; k100:=k100+1; end; while s>=50 do begin s:=s-50; k50:=k50+1; end; while s>=10 do begin s:=s-10; k10:=k10+1; end; while s>=5 do begin s:=s-5; k5:=k5+1; end; while s>=1 do begin s:=s-1; k1:=k1+1; end; writeln('k10000=',k10000,' k1000=',k1000,' k500=',k500,' k100=',k100,' k50=',k50,' k10=',k10,' k5=',k5,' k1=',k1); writeln(' Всего купюр = ',k1+k5+k10+k50+k100+k500+k1000+k10000); end.
Пример: s = 27879 k10000=2 k1000=7 k500=1 k100=3 k50=1 k10=2 k5=1 k1=4 Всего купюр = 21
var s,k1,k5,k10,k50,k100,k500,k1000,k10000:integer;
begin
write('s = '); readln(s);
k1:=0; k5:=0; k10:=0; k50:=0;
k100:=0; k500:=0; k1000:=0; k10000:=0;
while s>=10000 do begin s:=s-10000; k10000:=k10000+1; end;
while s>=1000 do begin s:=s-1000; k1000:=k1000+1; end;
while s>=500 do begin s:=s-500; k500:=k500+1; end;
while s>=100 do begin s:=s-100; k100:=k100+1; end;
while s>=50 do begin s:=s-50; k50:=k50+1; end;
while s>=10 do begin s:=s-10; k10:=k10+1; end;
while s>=5 do begin s:=s-5; k5:=k5+1; end;
while s>=1 do begin s:=s-1; k1:=k1+1; end;
writeln('k10000=',k10000,' k1000=',k1000,' k500=',k500,' k100=',k100,' k50=',k50,' k10=',k10,' k5=',k5,' k1=',k1);
writeln(' Всего купюр = ',k1+k5+k10+k50+k100+k500+k1000+k10000);
end.
Пример:
s = 27879
k10000=2 k1000=7 k500=1 k100=3 k50=1 k10=2 k5=1 k1=4
Всего купюр = 21
картинка
Объяснение:
1.
Минимальное двоичное число из 5 цифр: 10000₂
10000₂ = 1 * 2⁴ + 0 * 2³ + 0 * 2² + 0 * 2¹ + 0 * 2⁰ = 16 + 0 + 0 + 0 + 0 = 16₁₀
Максимальное двоичное число из 5 цифр: 11111₂
11111₂ = 1 * 2⁴ + 1 * 2³ + 1 * 2² + 1 * 2¹ + 1 * 2⁰ = 16 + 8 + 4 + 2 + 1 = 31₁₀
2.
1 / 2 = 0 + остаток 1
записываем остатки снизу вверх
1₁₀ = 1₂
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
2₁₀ = 10₂
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
3₁₀ = 11₂
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
4₁₀ = 100₂
5 / 2 = 1 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
5₁₀ = 101₂
6 / 2 = 3 + остаток 0
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
6₁₀ = 110₂
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
7₁₀ = 111₂
8 / 2 = 4 + остаток 0
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
8₁₀ = 1000₂
9 / 2 = 4 + остаток 1
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
9₁₀ = 1001₂
10 / 2 = 5 + остаток 0
5 / 2 = 1 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
10₁₀ = 1010₂
11 / 2 = 5 + остаток 1
5 / 2 = 1 + остаток 1
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
11₁₀ = 1011₂
12 / 2 = 6 + остаток 0
6 / 2 = 3 + остаток 0
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
12₁₀ = 1100₂
13 / 2 = 6 + остаток 1
6 / 2 = 3 + остаток 0
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
13₁₀ = 1101₂
14 / 2 = 7 + остаток 0
7 / 2 = 3 + остаток 1
3 / 2 = 1 + остаток 1
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
14₁₀ = 1110₂
16 / 2 = 8 + остаток 0
8 / 2 = 4 + остаток 0
4 / 2 = 2 + остаток 0
2 / 2 = 1 + остаток 0
1 / 2 = 1 + остаток 1
записываем остатки снизу вверх
16₁₀ = 10000₂
3. Где есть цифра 1 - пишем 1, где цифр нет - пишем 0.