; в eax - количество денег. Предполагается, что это число меньше/равно 4294967295 (больше в 32 бита не поместится)
; в ebx - адрес массива по 4 байта, купюры расположены в порядке убывания, общий размер 7*4=28 байт. В Си это реализуется как-то так (точно не знаю) : unsigned int kupures[7];
mov edx, eax
shr edx, 6 ; теперь edx содержит количество купюр по 64 рубля
mov dword [ebx], edx
;; с остальными купюрами всё проще. Каждая следующая степень 2 - это просто то, есть купюра или нет (если нужно расплатиться наименьшим их количеством)
;; кстати, всё это можно посмотреть и в обычном калькуляторе Windows
mov edx, eax
shr edx, 5
and edx, 1
mov dword [ebx+4], edx
mov edx, eax
shr edx, 4
and edx, 1
mov dword [ebx+8], edx
mov edx, eax
shr edx, 3
and edx, 1
mov dword [ebx+12], edx
mov edx, eax
shr edx, 2
and edx, 1
mov dword [ebx+16], edx
mov edx, eax
shr edx, 1
and edx, 1
mov dword [ebx+20], edx
and eax, 1
mov dword [ebx+24], eax
Я это не проверял, но должно работать
Это на Ассемблере, но элементарно переводится на что-нибудь другое
В JS (тока что проверил, вроде работает) :
money = prompt("Введите количество денег: ");
if(!isNaN(money)) {
alert("Деревянных купюр (по 1 руб) : "+ (money&1) +"\nКупюр по 2 руб: "+ ((money>>1)&1) +"\nКупюр по 4 руб: "+ ((money>>2)&1) +"\nКупюр по 8 руб: "+ ((money>>3)&1) +"\nКупюр по 16 руб: "+ ((money>>4)&1) +"\nКупюр по 32 руб: "+ ((money>>5)&1) +"\nКупюр по 64 руб: "+ (money>>6));
}
P.S. Хм.. . я как-то не учёл "натуральность" числа N. Если понадобится дробная часть числа, то в разных языках для этого существуют разные функции).
Другие языки программирования и технологии
В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. дано натуральное число N. Как на
i c q 169527143
разложение
N=a6*64+a5*32+a4*16+a3*8+a2*4+a1*2+a0;
результат, для x=0..5
ax=(N div 2^x) mod 2;
для x=6
ax=(N div 64);
т. е.
a0=(N div 1) mod 2;
a1=(N div 2) mod 2;
a2=(N div 4) mod 2;
...
N=a6*64+a5*32+a4*16+a3*8+a2*4+a1*2+a0;
результат, для x=0..5
ax=(N div 2^x) mod 2;
для x=6
ax=(N div 64);
т. е.
a0=(N div 1) mod 2;
a1=(N div 2) mod 2;
a2=(N div 4) mod 2;
...
Похожие вопросы
- Вопрос как к математикам так и к программистам...имеем числа 1,2,4,8,16,32,64,128имеем какое либо число, скажем 130
- Дано натуральное число n и вещественная матрица размера n X 9 . Плиз помогите(
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- Помогите пожалуйста!Паскаль. Дано натуральное число N. Получить наименьшее число вида 2(m в степени), превосходящее N.
- Помогите написать программу Дано натуральное число n. Вычислить сумму всех k(k+1), k меняется от 1 до n.
- ПОЖАЛУЙСТА!!!!Напишите программу для вычисления суммы 10 натуральных чисел последовательностью 1+2+4+8+..в Pascal
- что вы думаете о флешках на 4, 8, 16, 32 гб...надежнее те, что 4 или все щас надежные? мне кажется, что на 16 и 32 -
- Дано натуральное число N. Напечатать все его делители.
- дано натуральное число N. Определить является ли оно полиндромом. Паскаль